1. 程式人生 > >GUI圖形使用者介面的基本使用

GUI圖形使用者介面的基本使用

GUI可以說在java中並不能稱為十分重要的一步,但是,我們在學習的時候由於需要記憶大量的東西,這些也十分不利於我們後來的學習,但是有的知識又是在後來的學習中不可或缺的,所以,現在在回顧的時候希望可以把它形成文字,為自己也為他人創造一點方便,將零碎的知識點記下來,時常翻看,也可以收穫良多,ps:似乎也作為一個自己的學習記錄呢~

1. 列表內容
AWT:依賴底層,重量級
Swing:跨平臺,輕量級,依賴低,任何系統均可使用
所謂GUI

2. 整體架構
整體框架
元件排列的方式(也稱佈局)
流式:預設居中,從左到右
邊界:上北下南左西右東中 預設的是最大填充窗體 (Frame預設的是邊界佈局)
網格:元件是在格子內 (計算器)
網格包式:佔兩格
卡片式:常見的選項卡

3. 簡單的小例子
F.setsize( 橫,縱) 橫——距離左邊 縱——距離右邊
在實際的工作中
① 設定frame佈局
② 設定按鈕等元件並加入到面板panel中
③ 設定面板的佈局管理器
④ 設定frame的佈局管理器
⑤ 將panel加入到frame

    public static void main(String[] args) {
        Frame f=new Frame();
        f.setSize(500, 100);
        f.setLocation(200, 500);
//      f.setLayout(new FlowLayout());   //預設居中
f.setLayout(new BorderLayout()); //預設最大填充窗體 Button b=new Button("按鈕1"); f.add(b); //向裡面新增元件 f.setVisible(true); // System.out.println("h1"); 仍然會執行 }

4. 事件監聽機制
整個事件監聽機制流程

5. 視窗關閉
方法一:使用windowAdapter 可以只需要複寫需要重寫 的類,不需要全部重寫

public class FrameDemo05_01 {

    public
static void main(String[] args) { Frame f=new Frame(); f.setSize(500, 100); f.setLocation(200, 500); f.setLayout(new FlowLayout()); Button b=new Button("按鈕1"); f.add(b); //1.為事件源新增監聽 採用繼承extends WindowAdapter 只用複寫windowClosing() f.addWindowListener(new MyWin1()); f.setVisible(true); } } class MyWin1 extends WindowAdapter{ //2.有監聽器監聽的動作發生 點選關閉 //3.產生事件物件 //4.將事件物件傳遞給事件處理方式 @Override public void windowClosing(WindowEvent e) { // TODO 自動生成的方法存根 System.exit(0); // System.out.println("視窗關閉"+e.toString()); } }

方法二:採用匿名類的方法

public class FrameDemo05_02 {

    public static void main(String[] args) {
        Frame f=new Frame();
        f.setSize(500, 100);
        f.setLocation(200, 500);
        f.setLayout(new FlowLayout());

        Button b=new Button("按鈕1");
        f.add(b);


         //為視窗新增監聽  addWindowListener  傳遞  new WindowAdapter() 匿名物件
        f.addWindowListener(new WindowAdapter() {

            //1.重寫視窗關閉事件
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.exit(0);
//              System.out.println("視窗關閉"+e.toString());
            }


            //2.重寫視窗開啟事件
            @Override
            public void windowOpened(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("視窗開啟");
            }

            //3.重寫視窗活動事件
            @Override
            public void windowActivated(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("視窗活動");
            }


        }); 


        f.setVisible(true); 
    }

}

6. 實現事件和介面的分離

/**
 * 事件和介面分開了 
 * 
 *  //1.為視窗新增監聽   addWindowListener
 * //2.為按鈕新增點選監聽   addActionListener   ActionListener是一個介面,裡面的方法必須實現
 * @author helen
 * 上午11:32:07
 */
public class FrameDemo06 {

    private Frame f; 
    private Button btn;

    FrameDemo06(){
        init();
    }

    public void init(){
        f=new Frame("my frame");

        f.setBounds(300, 100, 500, 400);
        f.setLayout(new FlowLayout());

        btn=new Button("我是按鈕。");

        f.add(btn);


        //載入一下窗體上事件。
        event();  //監聽事件

        f.setVisible(true);

    }

    public void event(){

        //1.為視窗新增監聽   addWindowListener
        f.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.exit(0);
            }




        });



        /*
        按鈕就是事件源。
        那麼選擇哪個監聽器呢?
        通過關閉窗體示例瞭解到,想要知道哪個元件具備什麼樣的特有監聽器。
        需要檢視該元件物件的功能。
         通過查閱button的描述。發現按鈕支援一個特有監聽addActionListener。

        */
        //2.為按鈕新增點選監聽   addActionListener   ActionListener是一個介面,裡面的方法必須實現
        btn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("按鈕事件");
//              System.exit(0);
            }


        });



    }


    public static void main(String[] args) {
        new FrameDemo06();
    }

}

7. 各種監聽事件
監聽也分為多種: 活動監聽 窗體監聽 滑鼠監聽

活動監聽—>返回活動事件 (ActionListener 沒有介面卡) 一般是button按鈕的點選
btn.addActionListener

窗體監聽—>返回窗體事件 (實現WindowListener 或者是 繼承 WindowAdapter )
f.addWindowListener

滑鼠監聽—>返回滑鼠事件 (匿名物件MouseAdapter MouseAdapter 實現了 MouseListener )
btn.addMouseListener

鍵盤監聽—>返回鍵盤事件 (匿名物件KeyAdapter KeyAdapter實現了 KeyListener)
btn.addKeyListener

繼承 WindowAdapter :可以只用實現自己需要的
實現WindowListener :需要寫出所有的

鍵盤事件

/**
 * //1.新增滑鼠監聽事件addMouseListener 匿名物件MouseAdapter  MouseAdapter 實現了 MouseListener
 * @author helen
 * 下午12:30:26
 */
public class frameDemo07 {

    private Frame f;

    private Button btn;
    frameDemo07(){
        init();
    }

    public void init(){
        f=new Frame("我是標題");

        f.setBounds(300, 100, 500, 400);
        f.setLayout(new FlowLayout());

        btn=new Button("我是按鈕。");

        f.add(btn);

        event();

        f.setVisible(true);

    }

    public void event(){

        f.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.exit(0);
            }

        }); 

        btn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("action ok!");
            }
        });


        //1.新增滑鼠監聽事件addMouseListener 匿名物件MouseAdapter  MouseAdapter 實現了 MouseListener
        btn.addMouseListener(new MouseAdapter() {
            private int count=0;
            private int clickcount=0;
            @Override
            public void mouseEntered(MouseEvent e) {

            System.out.println("滑鼠進入到元件"+(count++));
            }
            /*@Override
            public void mouseClicked(MouseEvent e) {
                // TODO 自動生成的方法存根

                System.out.println("滑鼠點選元件"+(clickcount++));
            }
            */
            @Override
            public void mouseClicked(MouseEvent e) {
                // TODO 自動生成的方法存根

                if(e.getClickCount()==2){
                    System.out.println("滑鼠雙擊元件"+(clickcount++));
                }

            }





        });


    }


    public static void main(String[] args) {
        new frameDemo07();
    }

}

滑鼠事件

public class FrameDemo08 {

    private Frame f;

    private Button btn;

    private TextField tf;
    FrameDemo08(){
        init();
    }

    public void init(){
        f=new Frame("我是標題");

        f.setBounds(300, 100, 500, 400);
        f.setLayout(new FlowLayout());

        btn=new Button("我是按鈕。");

        tf=new TextField(20);
        f.add(tf);

        f.add(btn);

        event();

        f.setVisible(true);

    }

    public void event(){

        //新增視窗監聽
        f.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.exit(0);
            }

        }); 

        //新增鍵盤監聽
        tf.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO 自動生成的方法存根 
                int code=e.getKeyCode();
                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)){
                    System.out.println(code+"非法");
                    e.consume();
                }


            }



        });

        //新增鍵盤監聽
        btn.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO 自動生成的方法存根
                if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
                    System.exit(0);
                }
                /*if(e.getKeyCode()==KeyEvent.VK_ENTER){
                    System.exit(0);
                }*/

                if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){
                    System.out.println("ctrl enter are run");
                }
                System.out.println(e.getKeyChar()+"--"+e.getKeyCode());
                System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"**"+e.getKeyCode());
            }



        });



    }


    public static void main(String[] args) {
        new FrameDemo08();
    }

}

總結:
① 新增事件源
② 確定事件
③ 確定監聽器
④ 確定操作誰

8. 監聽小例子
內容轉移

/**
 * 內容轉移
 * @author helen
 * 下午12:41:24
 */
public class FrameDemo09 {

    Frame frame;
    TextField tf;
    Button btn;
    TextArea ta;
    public FrameDemo09(){
        MyInit();
    }

    public void MyInit(){
        frame=new Frame("我的視窗");
        frame.setBounds(100, 100,600, 500);
        frame.setLayout(new FlowLayout());

        tf=new TextField(60);
        btn=new Button("login ");
        ta=new TextArea(25,70);

        frame.add(tf);
        frame.add(btn);
        frame.add(ta);

        MyEvent();

        frame.setVisible(true);
    }
        private void MyEvent() {
        // TODO 自動生成的方法存根

            frame.addWindowListener(new WindowAdapter() {

                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO 自動生成的方法存根
                    System.out.println("關閉視窗");
                    System.exit(0);
                }

            });


            //點選button,內容轉移
            btn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    // TODO 自動生成的方法存根
                    String text=tf.getText();

                    ta.setText(text);
                    tf.setText("");
                    System.out.println("text:"+text);

                }
            });



    }

        public static void main(String[] args) {
            new FrameDemo09();
        }


}

輸入路徑,列印下面的所有檔案和資料夾 (沒有做錯誤處理)

public class FrameDemo09_2 {

    Frame frame;
    TextField tf;
    Button btn;
    TextArea ta;
    public FrameDemo09_2(){
        MyInit();
    }

    public void MyInit(){
        frame=new Frame("我的視窗");
        frame.setBounds(100, 100,600, 500);
        frame.setLayout(new FlowLayout());

        tf=new TextField(60);
        btn=new Button("login ");
        ta=new TextArea(25,70);

        frame.add(tf);
        frame.add(btn);
        frame.add(ta);

        MyEvent();

        frame.setVisible(true);
    }
        private void MyEvent() {
        // TODO 自動生成的方法存根

            frame.addWindowListener(new WindowAdapter() {

                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO 自動生成的方法存根
                    System.out.println("關閉視窗");
                    System.exit(0);
                }

            });

            btn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    // TODO 自動生成的方法存根
                 String dirname=tf.getText();
                 File dir=new File(dirname);
                 if(dir.exists()&&dir.isDirectory()){
                     ta.setText("");
                     String[] names=dir.list();

                     for(String name:names){
                         ta.append(name+"\r\n");
                     }
                 }

                }
            });



    }

        public static void main(String[] args) {
            new FrameDemo09_2();
        }


}

9. 對話方塊的使用
在上邊的例子中,做出了當輸入路徑錯誤時候的判斷 (如果設定了模式為true 表示:Dialog 點選後才能繼續操作)

/**
 * 列印路徑下的檔案的目錄
 * @author helen
 * 下午12:41:57
 */
public class FrameDemo10 {

    private Frame frame;
    private TextField tf;
    private Button btn;
    private TextArea ta;

    private Dialog d;
    private Label l;
    private Button btnmessage;

    public FrameDemo10() {
        MyInit();
    }

    public void MyInit() {
        frame = new Frame("我的視窗");
        frame.setBounds(100, 100, 600, 500);
        frame.setLayout(new FlowLayout());

        tf = new TextField(60);
        btn = new Button("login ");
        ta = new TextArea(25, 70);

        //此時的d是作為一個獨立的窗體 設定佈局
        d = new Dialog(frame, "提示資訊", true);
        d.setBounds(400, 200, 240, 150); //仍然是相對於整個電腦的左上角
        d.setLayout(new FlowLayout());
        l = new Label();
        btnmessage = new Button("確定");

        d.add(l);
        d.add(btnmessage);

        frame.add(tf);
        frame.add(btn);
        frame.add(ta);

        MyEvent();

        frame.setVisible(true);
    }

    private void MyEvent() { 

        //給frame加上視窗監聽器
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("關閉視窗");
                System.exit(0);
            }

        });

        //給d加上視窗監聽器  關閉視窗d
        d.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                d.setVisible(false);
//              System.out.println("關閉視窗d");
//              System.exit(0);
            }

        });


        //tf加上監聽  輸入換行結束輸入,並且顯示所有路徑
        tf.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO 自動生成的方法存根
                if(e.getKeyCode()==KeyEvent.VK_ENTER){
                    showDir();
                }
            }


        });


        //btn加上監聽  顯示所有路徑
        btn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                showDir();

            }
        });

        //給對話方塊 中的按鈕btnmessage加上監聽  
        btnmessage.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) { 
                d.setVisible(false);
            }
        });

    }

    public void showDir(){

        // TODO 自動生成的方法存根
        String dirname = tf.getText();
        File dir = new File(dirname);
        if (dir.exists() && dir.isDirectory()) {//正確獲得路徑資訊
            ta.setText("");
            String[] names = dir.list();

            for (String name : names) {
                ta.append(name + "\r\n");
            }
        }else{//不正確獲得資訊
            String info="輸入的資訊:"+dirname+"錯誤,重新輸入";
            l.setText(info);
            d.setVisible(true);
        }


    }

    public static void main(String[] args) {
        new FrameDemo10();
    }

}

10. 簡單的記事本
記事本的描述

/**
 * 記事本
 * @author helen
 * 下午12:43:17
 */
public class FrameDemo11 {

    private Frame frame;
    private MenuBar mb;
    private Menu menu, submenu;
    private MenuItem mitem, subitem;

    private MenuItem openitem, saveitem;

    private FileDialog opendia, savedia;

    private File file;

    private TextArea ta;

    public FrameDemo11() {
        MyInit();
    }

    public void MyInit() {
        frame = new Frame("我的視窗");
        frame.setBounds(100, 100, 650, 500);
        // frame.setLayout(new FlowLayout());

        mb = new MenuBar();
        menu = new Menu("檔案");
        submenu = new Menu("子選單");
        mitem = new MenuItem("退出");
        subitem = new MenuItem("子條目");
        openitem = new MenuItem("開啟");
        saveitem = new MenuItem("儲存");

        ta = new TextArea();

        submenu.add(subitem);
        menu.add(submenu);
        menu.add(saveitem);
        menu.add(openitem);
        menu.add(mitem);
        mb.add(menu);

        frame.setMenuBar(mb);

        opendia = new FileDialog(frame, "我是開啟", FileDialog.LOAD);
        savedia = new FileDialog(frame, "我是儲存", FileDialog.SAVE);

        frame.add(ta);
        MyEvent();

        frame.setVisible(true);
    }

    private void MyEvent() {        
        //窗體事件
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("關閉視窗");
                System.exit(0);
            }

        });

        //動作事件
        mitem.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                // TODO 自動生成的方法存根
                System.out.println("關閉視窗");
                System.exit(0);
            }
        });


        //動作事件
        openitem.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                // TODO 自動生成的方法存根
                opendia.setVisible(true);
                String dirPath = opendia.getDirectory();
                String fileName = opendia.getFile();
                System.out.println(dirPath + "--" + fileName);
                if (dirPath == null || fileName == null)
                    return;
                ta.setText("");
                File file = new File(dirPath, fileName);

                try {
                    FileReader fr = new FileReader(file);
                    BufferedReader bufr = new BufferedReader(fr);

                    String line = null;
                    while ((line = bufr.readLine()) != null) {
                        ta.append(line + "\r\n");

                    }

                    bufr.close();
                } catch (IOException e1) {
                    throw new RuntimeException("讀取失敗");
                }

            }
        });

        saveitem.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                // TODO 自動生成的方法存根
                if (file==null) {

                    savedia.setVisible(true);
                    String dirPath = savedia.getDirectory();
                    String fileName = savedia.getFile();
                    System.out.println(dirPath + "--" + fileName);
                    if (dirPath == null || fileName == null)
                        return;
                    file = new File(dirPath, fileName);
                }

                try{
                    FileWriter fw=new FileWriter(file);
                    BufferedWriter bufw=new BufferedWriter(fw);
                    String text=ta.getText();
                    bufw.write(text);
                    bufw.flush();
                    bufw.close();
                }catch(IOException eq){

                    throw new RuntimeException("儲存失敗");
                }

            }
        });

    }

    public static void main(String[] args) {
        new FrameDemo11();
    }

}

相關推薦

GUI圖形使用者介面基本使用

GUI可以說在java中並不能稱為十分重要的一步,但是,我們在學習的時候由於需要記憶大量的東西,這些也十分不利於我們後來的學習,但是有的知識又是在後來的學習中不可或缺的,所以,現在在回顧的時候希望可以把它形成文字,為自己也為他人創造一點方便,將零碎的知識點記下來

(雲伺服器)安裝GUI圖形介面(已解決)

伺服器:Vultr  OS:Ubuntu 14.04 步驟:  1.遠端登陸到伺服器  2.確保所有的包和依賴關係是最新的 apt-get update 1 3.安裝LXDE Minimalist apt-get install -y lubuntu-cor

第四十九講 GUI(圖形使用者介面)

GUI的簡單概述 Graphical User Interface(圖形使用者介面),用圖形的方式,來顯示計算機操作的介面,這樣更方便更直觀。與之相對應的Command line User Interface (命令列使用者介面),就是常見的Dos命令列操作,需要記憶一些常用的命令,

(轉)Vultr(雲伺服器)安裝GUI圖形介面(已解決)

伺服器:Vultr  OS:Ubuntu 14.04 步驟:  1.遠端登陸到伺服器  2.確保所有的包和依賴關係是最新的 apt-get update 1 3.安裝LXDE Minimalist apt-get install -y lubuntu-core 1 4.

python 實現GUI(圖形使用者介面)程式設計

Python支援多種圖形介面的第三方庫,包括: wxWidgets Qt GTK Tkinter: Tkinter 模組(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用

GUI(圖形使用者介面)

四、GUI案例 public class FrameDemo { public static void main(String[] args) { // 建立窗體物件 Frame f = new Frame("窗體關閉案例"); // 設定窗體標題 f.setTitle("HelloWor

java的GUI(圖形使用者介面)

GUI英文全稱為Graphical User Interface(圖形使用者介面) CLI英文全稱為Command Line User Interface(命令列使用者介面) 在java中圖形介面用兩個包分別是Awt和Swing java.awt:Abstract Win

linux系統中firewalld防火牆管理工具firewall-config(GUI圖形使用者介面

firewall-config是firewalld防火牆管理工具的GUI(圖形使用者介面)版本,幾乎可以實現所有以命令列來執行的操作。 firewall-config的介面如下圖(在終端直接執行firewall-config即彈出),其功能如下:   1:選擇執行時(Runtime)和永久(Per

Java基本功練習十七GUI圖形使用者介面基礎【基本概念及其使用、三種佈局管理器實現同樣的框架練習】)

為Java GUI程式設計而設計的API是應用面向物件原理的絕佳範例。 本博文主要講解 第一,介紹Java GUI程式設計的基礎知識。 第二,它使用GUI演示面向物件程式設計。 尤其是將介紹Java GUI API的框架結構,討論GUI元件及元件之間的相互關係、容器和佈局管

Java基礎總結之GUI圖形介面程式設計

GUI和CLI: GUI:(Graphical User Interface)圖形使用者介面:用圖形的方式顯示計算機的操作介面。 CLI:(Command Line User Interface)命令列使用者介面:常見的Dos命令列操作。 awt和swing: awt:(Abstra

ubuntu 圖形介面 gui 桌面版 root登入 sorry,that didn't work.please try again! 抱歉,認證失敗。請重試

    出現這種問題,用下面的方法就行了 https://jingyan.baidu.com/article/bad08e1e224b2709c85121f1.html 而且我發現,因為我用的是英文版的ubuntu,搜了一圈之後發現搜不到解決方法,然後有個人用的是中文版ubuntu

java-圖形使用者介面GUI)之AWT程式設計-整體思路與程式碼架構

1、整體思路   任何視窗都可以被分解成一個空的容器,容器中盛放了大量的基本元件,通過設定這些基本元件的大小、位置等屬性,就可以將該空的容器和基本元件組成一個整體的視窗。具體實現思路:   1)建立一個Frame頂層視窗   2)設定頂層視窗的佈局(如果需要的話):f.setLayout(new xxx

Java內容梳理(21)API學習(9)GUI圖形介面

1、GUI介紹 GUI程式設計:使用者圖形介面,軟體介面程式設計 Java中的GUI程式設計技術:AWT;Swing(AWT的擴充套件);SWT;JavaFx 2、Swing程式設計 元件: 組成軟體介面的零件;包括容器,控制元件,主題 控制元件: 與使用者發

筆記 Data Processing Using Python 5(GUI圖形介面

繼承:私有屬性和方法 預設情況下,python類的成員屬性和方法都是public。 提供“訪問控制符號”來限定成員函式的訪問。 雙下劃線--—_var屬性會被_classname_var替換,將防止父類與子類中的同名衝突。 單下劃線———在屬性名前使用一個

如何在CentOS7下安裝GUI圖形介面

1、如何在CentOS7下安裝GUI圖形介面       當你安裝CentOS7伺服器版本的時候,系統預設是不會安裝GUI的圖形介面程式,這個需要手動安裝CentOS7 Gnome GUI包。 2、在系統下使用命令安裝gnome圖形介面程式       在安裝Gnome

Java 圖形使用者介面GUI)佈局管理器

元件不能單獨存在,必須放置於容器中,元件在容器中的位置和尺寸是由佈局管理器來決定的 FlowLayout(流式佈局管理器) BoderLayout(邊界佈局管理器) GridLayout(網格佈局管理器) GridBagLayout(網格包佈局管理器) CardLa

(個人筆記)2018-11-11 圖形使用者介面GUI

1. 程式碼規範: /**  * 邊界佈局BorderLayout使用演示  * 1、繼承JFrame  * 2、定義你需要的各個元件  * 3、建立元件(在私有的初始化方法中)  * 4、新增元件(在私有的初始化方法中) * 5、設定佈局管理器,流式佈局預設為

Java 圖形介面設計(GUI)實戰練習(程式碼)

關於Java圖形化介面設計,基礎知識網上可搜,下面簡單介紹一下重點概念,然後就由淺入深程式碼例項。 程式是為了方便使用者使用的,Java引入圖形化介面程式設計。 1.JFrame 是容器類 2.AWT 是抽象視窗元件工具包,是 Java 最早的用於編寫圖形節目應用程

黑馬程式設計師——Java GUI圖形使用者介面

-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ GUI(圖形使用者介面) 一、概述  1.什麼是GUI?   GUI(Graphical User Interface)是使用者與作業系統進行互動的一種

java gui圖形介面程式設計

轉載學習轉自:https://blog.csdn.net/u012891055/article/details/50095365看了下網上的gui教程都沒有什麼比較好的,不管是java、安卓還是ios,設計UI都應該先從佈局上來考慮,而不是看一點寫一點。如果你一來就想著用絕對