黑马程序员——学习日记之GUI

                                                              ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、GUI的简述:
1、GUI图形化界面的分类:
   (1)、Graphical User Interface(图形用户接口)。
     用图形的方式,来显示计算机操作的界面,这样更方便更直观。
   (2)、Command line User Interface (命令行用户接口)
 就是常见的Dos命令行操作(需要记忆一些常用的命令,操作不直观)
    2、java也将这种界面封装为对象,把对象放在java.Awt包和javax.Swing两个包中。
  (1)、java.awt包
Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
  (2)、javax.swing包
在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
二、他们之间的继承关系

黑马程序员——学习日记之GUI_第1张图片

    1、多行文本域 TextArea
       t.setText();设置文本框内容
       t.append();设置文本框内容,但不覆盖原先内容
       t.insert(String str,int pos);在文本区的指定位置插入指定文本
  注 可以设置只读和是否编辑
2、单行文本域 TextField
       t.setText();设置文本框内容
       t.getText();获取文本框中输入的字符
3、Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
三、布局管理
    1、布局的理解:就是容器中的组件排列方式
2、常见布局管理器
(1) FlowLayout(流式布局管理器)
  从左到右的顺序排列
  Panel默认的布局管理器
(2) BorderLayout(边界布局管理器)
  东南西北中
  Frame默认的布局管理器
(3) GridLayout(网格布局管理器)
  规则的矩阵
(4) CardLayout(卡片布局管理器)
  选项卡
(5) GridBagLayout(网格包布局管理器)
  非规则的矩阵
四、简单的窗体创建过程:

[java]  view plain copy
  1. /* 
  2. 思路: 
  3. 1、创建Frame窗体: 
  4.         Frame f = new Frame("my Frame");可设置标题,即窗体名字 
  5. 2、对窗体进行基本设置:如大小,位置,布局等: 
  6.         f.setSize(int wight,int hight);窗体大小设置 
  7.         f.setLocation(int x,int y);窗体显示位置设置,横纵坐标 
  8.         f.setBounds(int x,int y,int wight,int hight),也可以直接用这个方法对大小和位置设置 
  9.         f.setLayout(Layout layout),参数为指定的布局管理器,如FlowLayout 
  10. 3、定义组件: 
  11.        如Button b = new Button("my Button");可设置组件的名称 
  12. 4、将组件通过窗体的add方法添加到窗体中: 
  13.         f.add(b);将按钮组件添加进窗体 
  14. 5、让窗体显示: 
  15.         f.setVisible(boolean b);通过设置参数是true还是false是否显示窗体 
  16. */  
  17. import java.awt.*;  
  18. import java.awt.event.*;  
  19.   
  20. class FrameDemo  
  21.     {  
  22.     public static void main(String[] args)   
  23.         {  
  24.   
  25.         //1、创建一个窗体。Frame  
  26.         Frame f = new Frame("my Frame");  
  27.         //2、对窗体进行基本设置。  
  28.         f.setSize(500400);  
  29.         f.setLocation(350200);  
  30.         //3、给窗体添加组件。  
  31.          Button but = new Button("my Button");  
  32.          //4、将组件添加到窗体中。  
  33.          f.add(but);  
  34.         //5、让窗体显示。  
  35.         f.setVisible(true);  
  36.           
  37.         System.out.println("over");  
  38.     }  
  39.   
  40. }  
五、事件监听机制
    分为
        1)事件源(组件) 就是那些图形界面组件
        2)事件(Event) 每一个事件源都有自己特有的对应事件和共性事件
        3)监听器(Listener) 将可触发某一事件的动作。(封装到侦听器中)
        4)事件处理 对事件引起后的处理方式。

事件监听机制流程

黑马程序员——学习日记之GUI_第2张图片
六、涉及到的事件
    1、窗体事件
 (1)、需求:想要实现点击窗体X就可以实现窗体的关闭。
思路:
  (1).1、事件源:窗体。
  (1).2、监听器。通过窗口对象去查。
  (1).3、事件处理。
  代码体现

[java]  view plain copy
  1. //关键代码(f为新建窗体对象)   
  2.      f.addWindowListener(new WindowAdapter()   
  3.         {  
  4.         public void windowClosing(WindowEvent e)   
  5.         {  
  6.             System.out.println("window 关");  
  7.             System.exit(0);  
  8.         }  
  9.   
  10.         public void windowOpened(WindowEvent e)   
  11.         {  
  12.               
  13.             System.out.println("window 开");  
  14.         }  
注:监听接口的适配器类:
 1、只要监听接口的中的方法在2个以内,都没有适配器类。
 2、适配器的出现只为方便创建监听器对象。
 3、但是一般监听接口都有适配器。
2、action事件
(1)、需求:想要点击按钮有效果,比如打印一句话。
思路:
 (1).1、确定事件源。按钮。
 (1).2、确定监听器。按钮添加监听器,按钮对象最清楚。到按钮对象中查找。
 (1).3、定义处理方式。
 代码体现

[java]  view plain copy
  1. but.addActionListener(new ActionListener()  
  2.          {  
  3.             public void actionPerformed(ActionEvent e)  
  4.             {  
  5.                 System.exit(0);  
  6.         });   

 注:定义的规范:XXXLinstener:XXX监听器。 --对应的XXXEvent事件。
3、鼠标事件
(1)、演示鼠标监听
思路:
(1).1、确定事件源。按钮。
(1).2、鼠标监听器注册到按钮上。
(1).3、定义处理方式。
代码体现

[java]  view plain copy
  1. but.addMouseListener(new MouseAdapter()   
  2.             {  
  3.             public void mouseClicked(MouseEvent e)   
  4.                 {  
  5.                   
  6.                 /* 
  7.                  * 想要对鼠标双击进行处理。应该找鼠标事件对象。因为事件对象一产生,内部必然封装事件源以及事件相关内容。 
  8.                  * 要查MouseEvent对象。 
  9.                  */  
  10.                 if(e.getClickCount() == 2)  
  11.                 {  
  12.                       
  13.                     System.out.println("mouse double click");  
  14.                 }  
  15.             }  
  16.               
  17.         });  
  18.            
4、键盘事件
(1)、需求:文本框中只能输入数字。
(1).1、事件源:文本框。
(1).2、文本框注册键盘监听。
(1).3、事件处理
代码体现

[java]  view plain copy
  1. tf.addKeyListener(new KeyAdapter()   
  2.         {  
  3.             public void keyPressed(KeyEvent e)   
  4.                 {  
  5.                   
  6.                 //1,如何获取录入的内容。通过键盘事件对象获取。  
  7.             char key = e.getKeyChar();  
  8.             int code = e.getKeyCode();  
  9.             System.out.println(code+"...."+KeyEvent.getKeyText(code));  
  10.                   
  11.                 int code = e.getKeyCode();  
  12.                 if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9))  
  13.                 {  
  14.                     System.out.println("必须是0-9数字");  
  15.                 e.consume();//直接取消默认处理方式。  
  16.                 }  
  17.             }  
  18.               
  19.         });  

七、菜单

[java]  view plain copy
  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3. class Demo1  
  4.     {  
  5.         //定义组件引用    
  6.        private Frame f ;  
  7.        private MenuBar mb ;  
  8.        private Menu m ;  
  9.        private MenuItem closeItem , item1 ,item2;  
  10.         //构造函数    
  11.       Demo1()  
  12.         {  
  13.               init();  
  14.               event();  
  15.        }  
  16.        //窗体设置与功能实现     
  17.        private void init()  
  18.            {  
  19.               f = new Frame("my window");  
  20.               f.setBounds(300,150,500,600);    
  21.               f.setLayout(new FlowLayout());  
  22.                //窗体显示    
  23.               f.setVisible(true);  
  24.               mb = new MenuBar();//创建菜单条    
  25.               m = new Menu("文件");//创建菜单条    
  26.               item1 = new MenuItem("打开");//菜单下面的子菜单   
  27.               item2 = new MenuItem("保存");//菜单下面的子菜单   
  28.               closeItem = new MenuItem("退出");//菜单包含的条目    
  29.               m.add(item1);  
  30.               m.add(item2);  
  31.               m.add(closeItem);  
  32.               mb.add(m);  
  33.               f.setMenuBar(mb);  
  34.        }  
  35.        private void event()  
  36.            {  
  37.             //窗体关闭功能    
  38.               f.addWindowListener(new WindowAdapter()  
  39.               {  
  40.                      public void windowClosing(WindowEvent e)  
  41.                      {  
  42.                             System.exit(0);  
  43.                      }  
  44.               });  
  45.                //关闭菜单具备关闭事件    
  46.               closeItem.addActionListener(new ActionListener()  
  47.               {  
  48.                      public void actionPerformed(ActionEvent e)  
  49.                      {  
  50.                             System.exit(0);  
  51.                      }  
  52.               });  
  53.        }  
  54.     public static void main(String[] args)     
  55.     {    
  56.         new Demo1();    
  57.     }    
  58. }  

你可能感兴趣的:(黑马程序员——学习日记之GUI)