01_GUI图形用户接口

来源:互联网 发布:解析域名什么意思 编辑:程序博客网 时间:2024/05/16 05:46

一、GUI概述

GUI全称graphics user interface(图形用户接口)在用java建立图形用户界面的时候,有两种方法:
1、AWT全称“abstract window toolkit”是重组件,比较依赖于系统平台,显示样式跟随系统央视。
2、SWING是轻组件,不依赖于系统平台。
3、但是通过学习,自己还知道了第三种图形化开发模式,那就是SWT图形开发模式,自己经常用到的java开发环境eclipse集成开发环境就是用SWT开发的图形用户界面的,全称“standard widget toolkit标准组建工具“。

二、Frame&JFrame窗体的基本组成内容
自己知道一个窗体包含很多的组件,但是里面都是有层级关系的,下面列出来的是从大到小的层级关系:

1、Frame或者JFrame(窗体的总称:可以添加WindowListener监听器)
2、LayOut(窗体Frame或者JFrame可以通过setLayout方法进行窗体布局的设置)
3、菜单bar(bar里面包括菜单项目和下拉菜单:可以添加ActionListener监听器)
4、layout窗体布局中的各种组件(各种组件:可以添加ActionListener监听器)

三、Frame窗体创建基本步骤
1、创建窗体Frame
2、对窗体Frame进行基本设置(大小,位置,布局)
3、定义组件(按钮,菜单之类)
4、添加组件,使用窗体Frame创建的对象使用add方法进行添加
5、让窗体显示,通过setVisible(true)

四、Frame窗体设置的基本步骤
1、注意设置窗口大小
2、注意设置窗口的布局,默认是borderlayout
3、注意设置窗口出现的位置
4、注意设置窗口的可见性
5、注意Frame和JFrame是不同的

五、JFrame和Frame窗体不同关闭方式
1、在Frame重组件窗体中,是“没有”setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);这个方法的,一般使用的是窗口的监听器调用System.exit(0);关闭窗口。
2、在JFrame轻组件中,是“可以“使用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);这个方法的,所以可以直接进行调用,相当的方便。

六、事件监听机制
1、概述:
自己知道,如果仅仅画出了图形用户界面,里面添加了很多的按钮,但是点击没有响应也是没有任何意义的。所以需要为这些组件添加“触发事件”,也就是用户点击按钮或者做出什么样的动作会触发什么样的系统反应。
2、事件监听机制的特点:
(1)、事件源:就是awt包或者是swing包中的那些图形界面组件。
(2)、事件:每一个事件源都有自己特有的对应事件和共性事件。
(3)、监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中。
(4)、事件的处理:自己定义的处理方式。
以上三者,在java中都已经定义好了,直接获取其对象就可以。直接获取其对象来进行调用就可以了。自己要做的事情只有一件,就是对产生的动作进行处理(可以理解为异常处理事件)

七、Frame窗口事件
1、创建窗口监听器的三大步骤:
(1)、给窗体提供监听器:frame.addWindowListener(WindowListener listener);(意思就是窗体frame添加监听器,监听器中的参数是”窗口监听器“创建的对象)
(2)、定义自己的事件类:WindowListener类中有一个子类叫做WindowAdapter,里面有很详细的窗体活动操作,只要复写WindowAdapter类中的相关的方法,就可以完成相应的操作。(意思就是自己定义的事件类继承自WindowAdapter这个系统类,这个类里面包括了几乎所有的对窗口的操作,只需要复写其中自己需要使用的方法即可。API所在的包的位置是:Window-addWindowListener(WindowListener listener)方法参数中的listener)
(3)、创建自己的事件类,里面的方法使用的是WindowAdapter系统类中的自己需要的复写的方法,方法需不需要参数,自己查看API文档的相关内容。

 

2、小程式示例:
要求将一个frame窗口点击”关闭“按钮的时候关闭窗口
 

frame.addWindowListener(new WindowAdapter () {//只有WindowAdapter类中有windowClosing相关的操作,自己只要复写其中的windowClosing方法即可public void windowClosing(WindowEvent e) {System.exit(0);//复写windowClosing方法,定义退出的操作}});



八、菜单栏MenuBar
1、菜单层级问题:
菜单项目也是有自己的层级结构的,也就是说一个层级包括着另一个层级
(1)、菜单栏MenuBar(这是最大的层级,包括菜单Menu)
(2)、菜单Menu(包括菜单项MenuItem)
(3)、菜单项MenuItem(最小的菜单结构了,没有再小的了)

Menu extends MenuItem(“菜单”继承的是“菜单项”),也就是说,“菜单”下面可以有“菜单项”,当然也可以有自己的“菜单”,所以一个层级结构如下所示:
MenuBar->Menu->Menu或者MenuItem
根据以上的层级结构可以依次进行类推,构造出自己独有风格的菜单层级。

2、总结:
如果自己定义的层级菜单中,自菜单中没有下一级菜单的话,那么这个子菜单就是MenuItem类型的(因为MenuItem就是最小层级的),如果还有下一级菜单的话,那么就是Menu类型的(因为是次级菜单层级)!明白了这一点,就可以做出来自己想要的菜单层级。为了让自己可以更加明确的了解到”菜单层级结构“,下面3中将会以一个小程式来讲解。

 

3、小程式演示:

menubar=new MenuBar();//这里是菜单栏,最大的层级menu1=new Menu("文件");//定义次级菜单条目menumenu2=new Menu("关于");menuitem1=new MenuItem("保存");menuitem3=new MenuItem("作者简介");menubar.add(menu1);//将菜单条目”文件“添加到菜单栏中,因为”文件“不是最小的单位,所以”文件“菜单不能使用menuitem来定义menu1.add(menuitem1);//因为”保存“是最小的一个菜单条目,所以使用menuitem来定义的,添加到了菜单条目”文件“中menu1.add(menu2);//因为”关于“也不是最小的菜单条目,所以不能使用menuitem来定义,需要使用menu来定义,添加到了”文件“菜单条目中menu2.add(menuitem3);//因为”作者简介“是最小的菜单条目,所以使用了menuitem来定义,并且被添加到了”关于“菜单条目中

 

九、文本组件Label
组件中不能直接写文本,需要把文字封装成label对象才可以添加这个label组件。
 

十、ActionListener和鼠标事件的优先级问题

1、概述:ActionListener和鼠标事件的时候,那么点击按钮的话,会先执行谁呢?答案是:先执行的鼠标事件!紧接着是ActionListener事件!自己一定要搞清楚!

2、小程式示例:

menuitem3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {dialog.setVisible(true);}});

ActionListener是少数可以创建ActionListener对象复写其中方法的,一般使用的都是“适配器Adapter”,上面的小程式意思是如果点击menuitem3的话,将会显示dialog对话框。

十一、适配器Adapter
1、概述:
适配器Adapter,里面一般复写的是方法,方法都是空的!就是想让程序员进行自定义的。大部分的监听器都是需要Adapter适配器的,但是又小部分监听器不需要适配器,大概有3个监听器不需要,其中包括ActionListener动作监听器(用来监视组件动作的一个监听器)。

2、为什么有的监听器不需要适配器呢?
因为自身的方法比较少,所以忽略了。一般的监听器的方法都是很多的,需要一个“适配器”进行方法的重写,让方法都是空的,可以自己自由发挥。

十二、监听器的种类
1、概述:
监听器有很多种,不同的监听器有自己不同的功能。

2、常用监听器:
(1)、键盘监听器,可以监听键盘上的动作。
(2)、ActionListener,一般可以给窗口中的组件进行添加使用的。
(3)、WindowListener,可以给窗体添加事件监听,里面封装了自己很多的方法

3、郑重声明:
这里再次提醒一下自己,不用“适配器Adapter”的监听器很少的,一般都是使用的适配器,但是现在知道的是ActionListener监听器不用适配器的!(先记住这一个)


 

0 0
原创粉丝点击