真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

很全很詳細的GUI編程-創(chuàng)新互聯(lián)

為什么要學(xué)習(xí)?

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、都江堰ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的都江堰網(wǎng)站制作公司
  1. 寫出自己想要的小工具。
  2. 工作可能需要維護到swing界面。
  3. 了解MVC架構(gòu),了解監(jiān)聽。

組件:窗口、彈窗、面板、文本框、列表框、按鈕、圖片、監(jiān)聽事件、鼠標(biāo)、鍵盤事件、破解工具。

一、簡介

GUI的核心技術(shù):Swing AWT

  1. 因為界面不美觀。

  2. 需要jre環(huán)境!

1.AWT 1.1 AWT介紹
  1. 包含了很多類和接口

  2. 元素:窗口、按鈕、文本框

  3. 所在包 java.awt

在這里插入圖片描述

1.2 組件和容器 1.2.1.Frame (1)一個窗口
public class TestFrame {public static void main(String[] args) {//Frame
        Frame frame = new Frame("我的第一個Java圖形界面窗口");
        //需要設(shè)置可見性
        frame.setVisible(true);
        //設(shè)置窗口大小
        frame.setSize(400,400);
        //設(shè)置背景顏色
        frame.setBackground(new Color(190, 246, 190));
        //彈出的初始位置
        frame.setLocation(200,200);
        //設(shè)置大小固定
        frame.setResizable(false);
    }
}

在這里插入圖片描述

(2)多個窗口
public class Test01 {public static void main(String[] args) {//展示多個窗口
        MyFrame myFrame1 = new MyFrame(200, 200, 200, 200, Color.BLUE);
        MyFrame myFrame2 = new MyFrame(300, 200, 200, 200, Color.yellow);
        MyFrame myFrame3 = new MyFrame(400, 200, 200, 200, Color.white);
        MyFrame myFrame4 = new MyFrame(500, 200, 200, 200, Color.black);
    }
}
//封裝
class MyFrame extends Frame{//繼承
    static int id = 0;//可能存在多個窗口,需要一個計數(shù)器
    public MyFrame(int x,int y,int w,int h,Color color){super("MyFrame"+(++id));
        setBackground(color);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

在這里插入圖片描述

如果要關(guān)閉窗口,則直接結(jié)束程序運行。

1.2.2. 面板Panel

可以看成是一個空間,但是不能單獨存在

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestPanel {public static void main(String[] args) {Frame frame = new Frame();
        //布局的概念
        Panel panel = new Panel();

        //設(shè)置布局
        frame.setLayout(null);

        //坐標(biāo)
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(86, 25, 146));

        //panel設(shè)置坐標(biāo),相對于frame
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(192,23,1));

        frame.add(panel);
        frame.setVisible(true);

        //監(jiān)聽事件,監(jiān)聽窗口關(guān)閉事件
        frame.addWindowListener(new WindowAdapter() {//窗口點擊關(guān)閉需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {//結(jié)束程序
                System.exit(0);
            }
        });
    }
}

在這里插入圖片描述

解決了窗口不能關(guān)閉的問題↓↓↓
監(jiān)聽事件:
在這里插入圖片描述

1.2.3.布局管理器 (1)流式布局
import java.awt.*;

public class TestFlowLayout {public static void main(String[] args) {Frame frame = new Frame();

        //組件-按鈕
        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");

        //設(shè)置為流式布局
        frame.setLayout(new FlowLayout(FlowLayout.LEFT));
        frame.setSize(200,200);

        //把按鈕添加上去
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);

        frame.setVisible(true);
    }
}

在這里插入圖片描述

(2)東南西北中
import java.awt.*;

public class TestBorderLayout {public static void main(String[] args) {Frame frame = new Frame("TestBorderLayout");

        Button east = new Button("East");
        Button west = new Button("West");
        Button south = new Button("south");
        Button north = new Button("north");
        Button center = new Button("center");

        frame.add(east,BorderLayout.EAST);
        frame.add(west,BorderLayout.WEST);
        frame.add(south,BorderLayout.SOUTH);
        frame.add(north,BorderLayout.NORTH);
        frame.add(center,BorderLayout.CENTER);

        frame.setSize(300,300);
        frame.setVisible(true);
    }
}

在這里插入圖片描述

(3)表格布局
import java.awt.*;

public class TestGridLayout {public static void main(String[] args) {Frame frame = new Frame("TestGirdLayout");

        Button btn1 = new Button("btn1");
        Button btn2 = new Button("btn2");
        Button btn3 = new Button("btn3");
        Button btn4 = new Button("btn4");
        Button btn5 = new Button("btn5");
        Button btn6 = new Button("btn6");

        frame.setLayout(new GridLayout(3,2));  //3行2列
        frame.add(btn1);
        frame.add(btn2);
        frame.add(btn3);
        frame.add(btn4);
        frame.add(btn5);
        frame.add(btn6);

        frame.pack();   //自動布局,自己選擇一個最優(yōu)秀的布局
        frame.setVisible(true);
    }
}

在這里插入圖片描述

(4) 綜合練習(xí):

在這里插入圖片描述

import java.awt.*;

public class EX {public static void main(String[] args) {Frame frame = new Frame();
        frame.setVisible(true);
        frame.setSize(400,300);
        frame.setLocation(300,400);
        frame.setBackground(new Color(212,165,167));
        frame.setLayout(new GridLayout(2,1));

        Panel panel1 = new Panel(new BorderLayout());
        Panel panel2 = new Panel(new GridLayout(2,1));
        Panel panel3 = new Panel(new BorderLayout());
        Panel panel4 = new Panel(new GridLayout(2,1));

        //上半部分
        panel1.add(new Button("East-1"),BorderLayout.EAST);
        panel1.add(new Button("West-1"),BorderLayout.WEST);
        panel2.add(new Button("p2-btn-1"));
        panel2.add(new Button("p2-btn-2"));
        panel1.add(panel2,BorderLayout.CENTER);

        //下半部分
        panel3.add(new Button("East-1"),BorderLayout.EAST);
        panel3.add(new Button("West-1"),BorderLayout.WEST);
//        Button btn1 = new Button("p4-btn1");
//        Button btn2 = new Button("p4-btn2");
//        Button btn3 = new Button("p4-btn3");
//        Button btn4 = new Button("p4-btn4");
//        panel4.add(btn1);
//        panel4.add(btn2);
//        panel4.add(btn3);
//        panel4.add(btn4);
        for (int i = 0; i< 4; i++) {panel4.add(new Button("p4-btn"+i));
        }
        panel3.add(panel4,BorderLayout.CENTER);

        frame.add(panel1);
        frame.add(panel3);
    }
}

在這里插入圖片描述

1.2.4. 事件監(jiān)聽(按鈕事件監(jiān)聽)

兩個按鈕的監(jiān)聽事件:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestActionEven {public static void main(String[] args) {Frame frame = new Frame("開始-停止");
        Button button = new Button("start");
        Button button1 = new Button("stop");

        //可以顯示的定義觸發(fā)會返回命令  如果不顯示定義,則會走默認的值
        //可以多個按鈕只寫一個監(jiān)聽類
        button1.setActionCommand("btn1-stop");

        MyActionListener myActionListener = new MyActionListener();

        button.addActionListener(myActionListener);
        button1.addActionListener(myActionListener);

        frame.add(button,BorderLayout.NORTH);
        frame.add(button1,BorderLayout.SOUTH);

        windowClose(frame);  //關(guān)閉窗口

        frame.pack();
        frame.setVisible(true);

    }
    //關(guān)閉窗體的事件
    private static void windowClose(Frame frame){frame.addWindowListener(new WindowAdapter() {@Override
            public void windowClosing(WindowEvent e) {System.exit(0);
            }
        });
    }
}
//事件監(jiān)聽
class MyActionListener implements ActionListener{@Override
    public void actionPerformed(ActionEvent e){//e.getActionCommand()  獲得按鈕的信息
        System.out.println("按鈕被點擊了:"+e.getActionCommand());
        //可以用if...else if...語句來寫不同按鈕的點擊事件
        if (e.getActionCommand().equals("start")){...    
        }
    }
}

在這里插入圖片描述

1.2.5.輸入框事件監(jiān)聽

(1)按下回車顯示輸出結(jié)果:

public class TestText01 {public static void main(String[] args) {//啟動
        new MyFrame();
    }
}
class MyFrame extends Frame{public MyFrame(){TextField textField = new TextField();
        add(textField);
        //監(jiān)聽這個文本輸入的文字
        MyActionListener2 myActionListener2 = new MyActionListener2();
        //按下回車就會觸發(fā)這個輸入框的事件
        textField.addActionListener(myActionListener2);
        
        setVisible(true);
        pack();
    }
}
class MyActionListener2 implements ActionListener{@Override
    public void actionPerformed(ActionEvent e){TextField field = (TextField) e.getSource();//獲得一些資源,返回的 一個對象
        System.out.println(field.getText());//獲得輸入框的內(nèi)容
    }
}

運行結(jié)果↓↓↓:

在這里插入圖片描述

(2)輸入密碼
在這里插入圖片描述

運行結(jié)果↓↓↓:

在這里插入圖片描述

(3)回車后清空輸入框中的內(nèi)容,并顯示輸出結(jié)果

在這里插入圖片描述

運行結(jié)果↓↓↓:

在這里插入圖片描述

1.2.6.簡易計算器

詳見:用GUI編程編寫一個簡易計算器

1.2.7.畫筆paint
public class TestPaint {public static void main(String[] args) {new MyPaint().loadFrame();
    }
}
class MyPaint extends Frame{public void loadFrame(){setVisible(true);
        setBounds(200,200,600,500);

    }
    //畫筆
    @Override
    public void paint(Graphics g){//畫筆  要有顏色   可以繪圖
        g.setColor(Color.red);
        g.drawOval(100,100,100,100);//畫輪廓  圓
        g.fillOval(200,200,100,100);//填充    圓

        g.setColor(Color.red);
        g.fillRect(350,200,200,200);//矩形
        //畫筆用完,要還原到最初的顏色
    }
}

運行結(jié)果:

在這里插入圖片描述

1.2.8.鼠標(biāo)監(jiān)聽

目的:想要實現(xiàn)鼠標(biāo)畫畫!

在這里插入圖片描述

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

//鼠標(biāo)監(jiān)聽事件
public class TestMouse {public static void main(String[] args) {new MyFrame("畫圖");
    }
}
//類
class MyFrame extends Frame{//畫畫需要畫筆,需要監(jiān)聽鼠標(biāo)當(dāng)前的位置,需要集合來存儲這個點
    ArrayList points;
    public MyFrame(String title){super(title);
        setBounds(200,200,400,300);
        //存放鼠標(biāo)點擊的點
        points = new ArrayList<>();

        //鼠標(biāo)監(jiān)聽器
        this.addMouseListener(new MyMouseListener());

        setVisible(true);
        pack();
    }
    
    @Override
    public void paint(Graphics g) {//畫畫  監(jiān)聽鼠標(biāo)的事件
        Iterator iterator = points.iterator();
        while(iterator.hasNext()){Point point = (Point) iterator.next();
            g.setColor(Color.red);
            g.fillOval(point.x,point.y,10,10);
        }
    }
    
    //添加一個點到界面上
    public void addPoint(Point point){points.add(point);
    }

    
    //適配器模式
    private class MyMouseListener extends MouseAdapter{//鼠標(biāo)點擊   按下   彈起    按住不放
        @Override
        public void mousePressed(MouseEvent e) {MyFrame myFrame = (MyFrame) e.getSource();
            //點擊時,屏幕上會產(chǎn)生一個點   這個點就是鼠標(biāo)的點
            myFrame.addPoint(new Point(e.getX(),e.getY()));
            //每次點擊鼠標(biāo)都要重新畫一遍
            myFrame.repaint();//刷新
        }
    }
}

結(jié)果:

在這里插入圖片描述

1.2.9.窗口監(jiān)聽
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestWindow {public static void main(String[] args) {new Window();
    }
}
class Window extends Frame{public  Window(){setBackground(Color.black);
        setBounds(200,200,100,100);
        setVisible(true);
        this.addWindowListener(
                //匿名內(nèi)部類
                new WindowAdapter() {//關(guān)閉窗口
                    @Override
                    public void windowClosing(WindowEvent e) {System.out.println("windowClosing");
                        System.exit(0);
                    }

                    //激活窗口
                    @Override
                    public void windowActivated(WindowEvent e) {Window source = (Window)e.getSource();
                        source.setTitle("被激活了");
                        System.out.println("windowActivated");
                    }
                }
        );
    }
}

運行結(jié)果:

在這里插入圖片描述

1.2.10.鍵盤監(jiān)聽
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class TestKey {public static void main(String[] args) {new KeyFrame();
    }
}
class KeyFrame extends Frame{public KeyFrame(){setBounds(1,2,200,300);
        setVisible(true);

        this.addKeyListener(new KeyAdapter() {//鍵盤按下
            @Override
            public void keyPressed(KeyEvent e) {//獲得鍵盤按得鍵是哪一個
                int keyCode = e.getKeyCode();
                System.out.println(keyCode);
                if (keyCode == KeyEvent.VK_UP){System.out.println("你按下了上鍵");
                }
            }
        });
    }
}

運行結(jié)果:

在這里插入圖片描述

2.Swing 2.1 窗體(JFrame)

在這里插入圖片描述

文本居中↓↓:

在這里插入圖片描述

2.2 彈窗(JDialog)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//主窗口
public class DialogDemo extends JFrame {public DialogDemo(){this.setVisible(true);
        this.setSize(700,500);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //JFrame 放東西,容器
        Container container = (Container) this.getContentPane();
        //絕對布局
        container.setLayout(null);

        //按鈕
        JButton button = new JButton("點擊彈出一個對話框");
        button.setBounds(30,30,200,50);
        //點擊按鈕時,彈出一個彈窗
        button.addActionListener(new ActionListener() {//監(jiān)聽器
            @Override
            public void actionPerformed(ActionEvent e) {new MyDialogDemo();
            }
        });
        container.add(button);
    }
    public static void main(String[] args) {new DialogDemo();
    }
}
//彈窗的窗口
class MyDialogDemo extends JDialog{public MyDialogDemo(){this.setVisible(true);
        this.setBounds(100,100,500,500);
        //不用再寫關(guān)閉窗口,默認有關(guān)閉事件
        Container container = this.getContentPane();
        container.setLayout(null);
    }
}

在這里插入圖片描述

2.3 標(biāo)簽 2.3.1 標(biāo)簽(Label):
new JLabel("xxxx");
2.3.2 圖標(biāo)(ICON):
import javax.swing.*;
import java.awt.*;

//圖標(biāo)是一個窗口   需要實現(xiàn)類   繼承Frame
public class IconDemo extends JFrame implements Icon {private int width,height;

    public IconDemo(){};//無參構(gòu)造
    public IconDemo(int width,int height){this.height = height;
        this.width = width;
    }

    //初始化
    public void init(){IconDemo iconDemo = new IconDemo(15,15);
        //圖標(biāo)放在標(biāo)簽,也可以放在按鈕上
        JLabel label = new JLabel("icontest", iconDemo, SwingConstants.CENTER);

        Container container = (Container) this.getContentPane();
        container.add(label);
        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {new IconDemo().init();
    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {g.fillOval(x,y,width,height);
    }

    @Override
    public int getIconWidth() {return this.width;
    }

    @Override
    public int getIconHeight() {return this.height;
    }
}

在這里插入圖片描述

2.3.3 圖片(ImageIcon)

在這里插入圖片描述

2.4 面板(JScroll) 2.4.1 JPanel

在這里插入圖片描述

2.4.2 JScrollPanel

在這里插入圖片描述

2.5 按鈕 2.5.1 圖片按鈕

在這里插入圖片描述

2.5.2 單選按鈕

在這里插入圖片描述

2.5.3 復(fù)選按鈕

在這里插入圖片描述

2.6 列表 2.6.1 下拉框

在這里插入圖片描述

2.6.2 列表框

在這里插入圖片描述

應(yīng)用場景:

  1. 選擇地區(qū),或者一些單個選項
  2. 列表:展示信息 一般是動態(tài)擴容
2.7 文本框 2.7.1 文本框

在這里插入圖片描述

2.7.2 密碼框

在這里插入圖片描述

2.7.3 文本域

配合面板使用

在這里插入圖片描述

內(nèi)容較多!
重在理解??!
感謝?(°?‵?′??)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁題目:很全很詳細的GUI編程-創(chuàng)新互聯(lián)
文章鏈接:http://weahome.cn/article/dicood.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部