黑马程序员_GUI

时间:2023-01-27 12:03:34

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

图形界面GUI:

 

GUI

 

 

Graphical User Interface(图形用户接口)。

 

 

用图形的方式,来显示计算机操作的界面,这样更方便更直观。

 

 

CLI

 


Command User Interface(命令行用户接口)

 


就是常见的Dos命令行操作。 

 

 

需要记忆一些常用的命令,操作不直观。 

 

Awt与Swing

 


java.Awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。 属于重量级组件。

 

 

依赖于系统。



java.Swing:在Awt基础上建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现。

 

 

增强了移植性,属轻量级实现。 


黑马程序员_GUI
 

 

 

Container是一个特殊的组件,虽然和其他组件平级,但是可以在该组件上添加其他的组件。

 

 

容器中的组件的排放方式,就是布局。

 

 

常见的布局管理器:

 

 

FlowLayout(流式布局管理器)从左到右的顺序排列。Panel默认的布局管理器。

 

 

BorderLayout(边界布局管理器)东,南,西,北,中,Frame默认的布局管理器。

 

 

GridLayout(网格布局管理器)规则的矩阵。

 

 

CardLayout(卡片布局管理器),选项卡。

 

 

GridBagLayout(网格包布局管理器),非规则的矩阵。

 

 

 创建图形化界面:

 


1、创建Frame窗体。

 


2、对窗体进行基本设置。

 


3、定义组建。

 


4、将组建通过窗体的add方法添加到窗体中。

 


5、让窗体显示,通过setVisible(true)。

 

 

事件监听:

 


黑马程序员_GUI
 

 

 

事件源:就是awt包或者swing包中的那些图形界面组建。

 

 

事件:每一个事件源都有自己特有的对应事件和共性事件。

 

 

监听器:将可以触发某一个实践的动作都已经封装到了监听器中。

 

 

窗口监听器:WindowListener

 

 

事件:ActionListener

 

 

鼠标事件:MouseListener

 

 

键盘事件:KeyListener

 

 

练习:

 

 

Java代码  黑马程序员_GUI
  1. class  MyWindowDemo  
  2. {  
  3.     //初始化窗口、文本区域,文本框、按钮、对话框、标签  
  4.     private Frame f;  
  5.     private TextField tf;  
  6.     private Button but;  
  7.     private TextArea ta;  
  8.       
  9.     private Dialog d;  
  10.     private Label lab;  
  11.     private Button okBut;  
  12.   
  13.   
  14.     MyWindowDemo()  
  15.     {  
  16.         init();  
  17.     }  
  18.       
  19.     //布局设置  
  20.     public void init()  
  21.     {  
  22.         f = new Frame("my window");//窗口布局  
  23.         f.setBounds(300,100,600,500);  
  24.         f.setLayout(new FlowLayout());//布局方式  
  25.   
  26.         tf = new TextField(60);//文本框宽度  
  27.   
  28.         but = new Button("转到");//按钮内容  
  29.   
  30.         ta = new TextArea(25,70);//文本区域大小  
  31.   
  32.   
  33.         d = new Dialog(f,"提示信息-self",true);//对话框设置  
  34.         d.setBounds(400,200,240,150);//对话框大小位置  
  35.         d.setLayout(new FlowLayout());//对话框布局  
  36.         lab = new Label();//内容标签  
  37.         okBut = new Button("确定");  
  38.   
  39.         //将组件添加进窗口和对话框  
  40.         d.add(lab);  
  41.         d.add(okBut);  
  42.   
  43.   
  44.   
  45.         f.add(tf);  
  46.         f.add(but);  
  47.         f.add(ta);  
  48.   
  49.   
  50.         myEvent();  
  51.         f.setVisible(true);  
  52.     }  
  53.       
  54.     /** 
  55.      * 定义事件 
  56.      */  
  57.     private void  myEvent()  
  58.     {  
  59.   
  60.         okBut.addActionListener(new ActionListener()//按确定按钮关闭对话框事件  
  61.         {  
  62.             public void actionPerformed(ActionEvent e)  
  63.             {  
  64.                 d.setVisible(false);  
  65.             }  
  66.         });  
  67.         d.addWindowListener(new WindowAdapter()//关闭对话框按钮事件  
  68.         {  
  69.             public void windowClosing(WindowEvent e)  
  70.             {  
  71.                 d.setVisible(false);  
  72.             }  
  73.         });  
  74.   
  75.         tf.addKeyListener(new KeyAdapter()//回车键查询事件  
  76.         {  
  77.             public void keyPressed(KeyEvent e)  
  78.             {  
  79.                 if(e.getKeyCode()==KeyEvent.VK_ENTER)  
  80.                     showDir();  
  81.             }  
  82.         });  
  83.   
  84.   
  85.         but.addActionListener(new ActionListener()//按钮查询  
  86.         {  
  87.             public void actionPerformed(ActionEvent e)  
  88.             {  
  89.                 showDir();  
  90.                   
  91.             }  
  92.         });  
  93.   
  94.         f.addWindowListener(new WindowAdapter()//窗体关闭  
  95.         {  
  96.             public void windowClosing(WindowEvent e)  
  97.             {  
  98.                 System.exit(0);   
  99.             }  
  100.         });  
  101.     }  
  102.   
  103.     private void showDir()  
  104.     {  
  105.         String dirPath = tf.getText();//获取文本框内容  
  106.                   
  107.         File dir = new File(dirPath);//将路径封装为file对象  
  108.   
  109.         if(dir.exists() && dir.isDirectory())//判断是否存在并且是一个文件夹  
  110.         {  
  111.             ta.setText("");  
  112.             String[] names = dir.list();  
  113.             for(String name : names)  
  114.             {  
  115.                 ta.append(name+"\r\n");  
  116.             }  
  117.         }  
  118.         else  
  119.         {  
  120.             String info = "您输入的信息:"+dirPath+"是错误的。请重输";//对话框标签内容  
  121.             lab.setText(info);  
  122.             d.setVisible(true);//显示对话框  
  123.         }  
  124.     }  
  125.   
  126.     public static void main(String[] args)   
  127.     {  
  128.         new MyWindowDemo();  
  129.     }  
  130. }  

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------