国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

黑馬程序員——【Java基礎】——GUI(圖形用戶界面)

2019-11-14 21:16:36
字體:
來源:轉載
供稿:網友
黑馬程序員——【java基礎】——GUI(圖形用戶界面)

---------- android培訓、java培訓、期待與您交流! ----------

一、概述

  1、GUI(GraphicalUser Interface):又稱圖形用戶界面,是計算機用戶與計算機交互的一種方式。

  2、用戶與計算機交互的方式有兩種:GUI和CLI。

  (1)GUI(Graphical User Interface):圖形用戶接口,用圖形方式,來顯示計算機操作界面,方便直觀。

  (2)CLI(Command LineUser Interface):命令行用戶接口,即常見的Dos命令行操作,須記住一些命令,操作不直觀。

  3、Java提供的GUI對象都存在于java.Awt和javax.Swing兩個包中,其中:

  (1)java.Awt(Abstract Window Toolkit):即抽象窗口工具包,調用本地系統方法實現功能,屬重量級控件。

  (2)javax.Swing包:在AWT的基礎上建立的一套圖形界面系統,有更多的組件,且完全由java實現,屬輕量級控件。

二、繼承關系圖

  

  注:Container是容器型組件,該組件中可以通過add方法添加其他組件。Container常用子類:Window、Panel(不能單獨存在)。

三、布局管理器

  1、布局:容器中的組件排列方式。

  2、常見的布局管理器:

    ● FlowLayout(流式布局管理器)

        |---從左向右排列,Panel默認排列方式。

    ● BorderLayout(邊界式布局管理器)

        |---東南西北中的排列方式,是Frame的默認布局管理。

    ● GridLayout(網格式布局管理器)

        |---規則的矩陣。

    ● CardLayout(卡片式布局管)

        |---即選項卡。

    ● GridBayLayout:(網格包布局管理器)

        |---非規則矩陣

四、Frame演示

  (一)Frame創建步驟

  1、創建Frame窗體:

  Frame f = new Frame("my Frame");//可設置標題,即窗體名字

  2、對窗體進行基本設置:如大小,位置,布局等:

  f.setSize(int wight,int hight);//窗體大小設置

  f.setLocation(int x,int y);//窗體顯示位置設置,橫縱坐標

  f.setBounds(int x,int y,int wight,int hight),也可以直接用這個方法對大小和位置設置

  f.setLayout(Layout layout),參數為指定的布局管理器,如FlowLayout

  3、定義組件:

  Button b = new Button(“my Button”);//可設置組件的名稱

  4、將組件通過add方法添加到窗體中:

  f.add(b);//將按鈕組件添加進窗體

  5、讓窗體顯示:

  f.setVisible(boolean b);//通過設置參數是true還是false是否顯示窗體

  (二)Frame演示示例

 1 class FrameDemo{ 2     public static void main(String[] args){ 3         Frame f = new Frame("my frame"); 4 //        f.setSize(500, 400);     5 //        f.setLocation(400, 200); 6         f.setBounds(400, 200, 500, 400); 7         f.setLayout(new FlowLayout());//設置流式布局 8         Button but  = new Button("一個按鈕"); 9         f.add(but);//將按鈕添加到窗體中。10         f.setVisible(true);11     }12 }

五、事件監聽機制

  (一)事件監聽機制組成

  (1)事件源(組件)。

  (2)事件(Event)。

  (3)監聽器(Listener)。

  (4)事件處理(引發事件后的處理方式)。

  (二)事件監聽機制流程圖

   

  (三)事件處理的步驟

  (1)確定事件源(容器或組件)。通過事件源對象的addXXXListener()方法將監聽器(Listener)注冊到該事件源上。該方法中接收XXXListener的子類對象,或者XXXListener的子類XXXAdapter的子類對象。

  (2)一般用匿名內部類來表示。在覆蓋方法的時候,方法的參數一般是XXXEvent類型的變量接收。

1 Frame f= new Frame("演示鼠標和鍵盤監聽");2 f.addWindowlistener(new WindowAdapter()3 {4 @Override5      public void windowClosing(WindowEvent e)6      {7           System.exit(0);//表示關閉窗口8      }9 });

  說明:

  (1)事件觸發后會將事件打包成對象傳遞給覆寫方法中參數的變量。(其中包括事件源對象,通過getSource()或者getComponent()獲取。)

  (2)若用子類實現WindowListener接口,就需要覆蓋其中的7個方法,可只用到其中的關閉動作,其他動作未用到,但卻必須重寫全部。因為WindowLister的子類WindowAdapter(適配器)已經實現此接口,并覆蓋了其中所有方法。那么只需繼承WindowAdapter,覆蓋需要的方法即可。

  (3)明確事件,并對事件進行處理,其實,添加什么監聽器就需要添加什么事件。

  (四)應用示例

  1、/* 鍵盤事件和鼠標事件 */

 1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.TextField; 5 import java.awt.event.KeyAdapter; 6 import java.awt.event.KeyEvent; 7 import java.awt.event.MouseAdapter; 8 import java.awt.event.MouseEvent; 9 import java.awt.event.WindowAdapter;10 import java.awt.event.WindowEvent;11 public class MouseAndKeyDemo {12     PRivate Frame f;13     private TextField tf;14     private Button but;15 //構造函數,用來初始化16     public MouseAndKeyDemo() {17         init();18     }19     //窗體創建與功能實現20     private void init() {21         f = new Frame("鼠標和鍵盤監聽演示");22         f.setBounds(400, 200, 500, 400);23         f.setLayout(new FlowLayout());24 25         tf = new TextField(35);26         but = new Button("一個按鈕");27 28         f.add(tf);29         f.add(but);30 31         myEvent();32 33         f.setVisible(true);34     }35     //注冊事件36     private void myEvent() {37         // 給文本框添加鍵盤監聽。38         tf.addKeyListener(new KeyAdapter() {39             @Override40             public void keyPressed(KeyEvent e) {41                 if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER) {42                     System.out.println("enter run ...");43                 }44             }45         });46 47         f.addWindowListener(new WindowAdapter() {48             @Override49             public void windowClosing(WindowEvent e) {50                 System.exit(0);51             }52         });53 54         // 在按鈕上添加一個鼠標監聽.55         but.addMouseListener(new MouseAdapter() {56             private int count = 1;57             @Override58             public void mouseClicked(MouseEvent e) {59                 if (e.getClickCount() == 2)60                     tf.setText("mouse double click..." + count++);61             }62         });63     }64     public static void main(String[] args) {65         new MouseAndKeyDemo();66     }67 }

  2、列出指定目錄下的內容,當輸入的路徑不正確時,給出錯誤提示信息。

  1 /* 列出指定目錄下的內容,當輸入的路徑不正確時,給出錯誤提示信息。 */  2 import java.io.*;  3 import java.awt.*;  4 import java.awt.event.*;  5 class MyWindowDemo {  6     // 定義所需組件引用  7     private Frame f;  8     private Button but, bok;  9     private TextField tf; 10     private TextArea ta; 11     private Dialog d; 12     private Label lab; 13  14     // 構造函數 15     MyWindowDemo() { 16         init(); 17     } 18  19     // 窗體基本設置于功能實現 20     public void init() { 21         // 組件實例化 22         f = new Frame("我的Window"); 23         but = new Button("跳轉"); 24         tf = new TextField(58); 25         ta = new TextArea(27, 65); 26  27         // 基本設置 28         f.setBounds(300, 150, 500, 500); 29         f.setLayout(new FlowLayout()); 30  31         // 添加組件 32         f.add(tf); 33         f.add(but); 34         f.add(ta); 35  36         // 窗體事件 37         myEvent(); 38  39         // 窗體顯示 40         f.setVisible(true); 41     } 42  43     // 注冊事件 44     public void myEvent() { 45         // 窗體關閉功能 46         f.addWindowListener(new WindowAdapter() { 47             public void windowClosing(WindowEvent e) { 48                 System.exit(0); 49             } 50         }); 51  52         // “跳轉”按鈕事件 53         but.addActionListener(new ActionListener() { 54             public void actionPerformed(ActionEvent e) { 55                 showFile();// 列出目錄內容在文本區中 56             } 57         }); 58  59         // 文本框鍵盤事件 60         tf.addKeyListener(new KeyAdapter() { 61             public void keyPressed(KeyEvent e) { 62                 // 如果鍵盤按下Enter鍵,就將目錄內容顯示在文本區中 63                 if (e.getKeyCode() == KeyEvent.VK_ENTER) 64                     showFile(); 65             } 66         }); 67     } 68  69     // 目錄內容顯示在文本區中方法 70     private void showFile() { 71         String path = tf.getText();// 獲取輸入的路徑 72         File dir = new File(path);// 將路徑封裝成對象 73         // 判斷輸入的路徑是否存在,且是否是文件夾 74         if (dir.exists() && dir.isDirectory()) { 75             ta.setText("");// 清空文本區中的內容 76  77             String names[] = dir.list();// 列出目錄下的內容 78              79             for (String name : names) { 80                 ta.append(name + "/r/n");// 添加進文本區中 81             } 82         } else { 83             // 對話框基本設置 84             d = new Dialog(f, "錯誤提示", true); 85             d.setBounds(400, 200, 280, 150); 86             d.setLayout(new FlowLayout()); 87  88             bok = new Button("確定"); 89             lab = new Label(); 90  91             // 添加按鈕和文本 92             d.add(bok); 93             d.add(lab); 94  95             // 對話框關閉事件 96             d.addWindowListener(new WindowAdapter() { 97                 public void windowClosing(WindowEvent e) { 98                     d.setVisible(false);// 退出對話框 99                 }100             });101 102             // “確定”按鈕事件103             bok.addActionListener(new ActionListener() {104                 public void actionPerformed(ActionEvent e) {105                     d.setVisible(false);// 按確認鍵,退出對話框106                 }107             });108 109             String info = "您輸入的路徑:" + path + "是錯誤的,請重輸!";110 111             lab.setText(info);// 設置標簽文本內容112             d.setVisible(true);// 顯示對話框113         }114     }115 116     public static void main(String[] args) {117         // 運行窗體118         new MyWindowDemo();119     }120 }

---------- android培訓、java培訓、期待與您交流! ----------


上一篇:Java冒泡排序

下一篇:Java基礎語法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 常山县| 灯塔市| 晋中市| 安吉县| 酉阳| 安吉县| 称多县| 陇西县| 敦煌市| 阳江市| 呼伦贝尔市| 天峨县| 昌邑市| 新野县| 比如县| 同德县| 华蓥市| 东光县| 鄂托克旗| 苍南县| 皋兰县| 屏边| 普宁市| 马山县| 嘉峪关市| 平阳县| 沾益县| 平塘县| 濮阳县| 南川市| 大冶市| 始兴县| 遵化市| 望城县| 兴隆县| 邵东县| 宁河县| 新余市| 遂溪县| 中牟县| 高雄县|