实验二图形用户界面设计
一、 实验目的
1.掌握常用GUI构件及其布局管理的使用方法。
2.掌握事件处理的方法。
3.了解Swing控件的概念。
二、 实验原理
1、图形用户界面介绍
Java语言为了方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面和处理图形界面的各种事件,这个类库就是java.awt包,从JDK1.2又提供了Swing类包。
2、GUI编程的三要素
(1)组件,Java把Component类的子类或间接子类创建的对象称为一个组件。集成了一定的功能模块,提供了公用接口以便外部调用,具有良好的可重用性。
(2)容器,Java把Container的子类或间接子类创建的对象称为一个容器。容器中可以放置其他组件,并且通过布局管理器(LayoutManager)管理容器中各组件的位置,容器也是一种特殊的组件。
Container类提供了一个public方法:add(),一个容器可以调用这个方法将组件添加到该容器中。容器调用removeAll()方法可以移掉容器中的全部组件;调用remove(Componentc)方法可以移掉容器中参数c指定的组件。
每当容器添加新的组件或移掉组件时,应当让容器调用validate()方法,以保证容器中的组件能正确显示出来
(3)事件,每个组件都会触发动作事件,Java中不同的事件由不同的(Listener)处理,组件是事件源,而某种主要用来监听来自指定事件源产生的动作事件。
3、常用容器
(1)常用容器
Jframe底层容器
JPanel面板
滚动窗格JScrollPane
拆分窗格JSplitPane
JLayeredPane分层窗格
(2)布局管理器
Java语言提供了布局管理器来管理组件在容器中的布局,而不直接设置组件的位置和大
小。每个容器都要一个布局管理器,容器中组件的定位都由它来决定。当容器需要对某个组
件进行定位时,就会调用其对应的布局管理器。标准的布局管理器类有:
? | FlowLayout | BorderLayout |
? | GridLayout | CardLayout |
? | GridBagLayout |
3、GUI组件
(1)文本框:由JComponent的子类JTextField创建文本框(2)文本区:由JComponent的子类JTexArea创建文本区(3)按钮:由JComponent的子类JButton类用来创建按钮。
(4)标签:由JComponent的子类JLabel类用来创建标签。
(5)选择框:由JComponent的子类JCheckBox类用来创建选择框。
(6)单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框。(7)列表框:由JComponent的子类JList类用来创建下拉列表。
组合框:由JComponent的子类JComboBox类用来创建组合框。
(8)密码框:由JComponent的子类JPasswordField创建密码框。
4、菜单条、菜单、菜单项
(1)菜单条
JComponent类的子类JMenubar负责创建菜单条,JFrame类有一个将菜单条放置到窗口中的方法:setJMenuBar(JMenuBarbar);该方法将菜单条添加到窗口的顶端
(2)菜单:JComponent类的子类JMenu负责创建菜单,JMenu类的主要方法有以下几种 publicvoid add(JMenuItem item) 向菜单增加由参数item指定的菜单选项。
publicJMenuItem getItem(int n) 得到指定索引处的菜单选项。
publicint getItemCount() 得到菜单选项的数目。
(3)菜单项
JComponent类的子类JMenuItem负责创建菜单项,JMenuItem类的主要方法有以下几种:
JMenuItem(Strings) 构造有标题的菜单项。
JMenuItem(Stringtext, Icon icon) 构造有标题和图标的菜单项
public void setAccelerator(KeyStroke keyStroke) 为菜单项设置快捷键。
5、对话框
对话框(Dialog)是一个Frame或另一个对话框拥有的窗口,如果它的父窗口消失,它也随之撤消。对话框扩充Window类,因而继承了Window的show和pack等方法。有两种类型的对话窗口:
?模态对话框(ModalDialog):这种对话框阻塞它的父对象的输入,并且必须在它的父对象再次获得输入之前,被关闭或自动消失。
?非模态对话框(Non-ModalDialog):这种对象框并不阻塞父对象的输入,它可以与父对象并存。除非特别声明,一般的对话框是非模态的。
(1)消息对话框:可以用javax.swing包中的JOptionPane类的静态方法:
publicstatic void showMessageDialog( Component parentComponent, Stringmessage, String title, int messageType)创建一个消息对话框。
(2)输入对话框:可以用javax.swing包中的JOptionPane类的静态方法:
publicstatic String showInputDialog(Component parentComponent, Objectmessage, String title, int messageType)创建一个输入对话框。
(3)确认对话框:用javax.swing包中的JOptionPane类的静态方法:
publicstatic int showConfirmDialog(Component parentComponent, Objectmessage, String title, int optionType)得到一个确认对话框。
(4)颜色对话框:可以用javax.swing包中的JColorChooser类的静态方法:
publicstatic Color showDialog(Componentcomponent,String title, Color initialColor)创建
一个有模式的颜色对话框
(5)自定义对话框
6、事件处理
事件处理模型将事件源(产生事件的组件)和对事件的具体处理(利用一种称为
[listener]的实体来对事件进行具体的处理)分开。
组件(事件源)都不处理自己的事件,而是将事件处理委托给一个或多个处理实体(监
听器),这种事件处理模型称为事件的授权处理模型。不同的类型事件,可以交由不同类型
的去处理。
Java提供了抽象的响应特定事件的“事件”,它们在java.awt.event包中被定义为接口,每个构件可以通过调用addXXXListener(XXXListenerl)方法使某个事件来监听某个事件源。当一个事件发生时,事件源调用所定义的处理方法,并提供该事件对象作
为它的参数。
(1)ActionEvent事件
(2)AdjustmentEvent事件
(3)ComponentEvent 事件
(4)ContainerEvent 事件
(5)FocusEvent事件
(6)ItemEvent事件
(7)TextEvent事件
(8)KeyEvent事件
(9)WindowEvent事件
(10)MouseEvent事件
三、 实验内容
1、验证题:用户在窗口中的一个文本区内每输入完一个单词后,另一个文本区会自动
的按字典排序法自动更新另一个文本区。
Example9_9.java:
packageexample9_9;
publicclass Example9_9 {
publicstatic void main(String[] args) {
WindowDocumentwin=new WindowDocument();
win.setBounds(100,100,700,500);
win.setTitle("排序单词");
}
}
WindowDocument.java:
TextListener.java:
请运行这个程序,并将运行情况截图。
2、完成下列程序的填空。这是一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。窗口中添加两个文本区,当在第一个文本区中输入若干个数时,另一个文本区同
时对输入的数进行求和与求平均值运算。
SY2_1.java:
Compute.java:
TextListener.java
ComputeWindow.java
3、验证性实验。请回答该程序的功能是什么,并将运行情况截图。
SY2_2.java:
packagesy2_2;
publicclass SY2_2 {
publicstatic void main(String[] args){
ComputerFramefr=new ComputerFrame();
}
ComputerFrame.java:
4、请在第3题的基础上修改,该程序要求实现计算机自动出题,并统计显示总题数和
答对的题数。该窗口中有两个按钮Buttonproblem和Buttonok,单击Buttonproblem按钮,则计算机自动出题,单击Buttonok按钮,则表示本题计算结果已输入;有三个文本
框text1、text2和text3,禁止在窗口的文本框text1和text2中输入数值,文本框text1和text2只是用来显示系统随机生成的两个100以内的整数,text3中输入计算结果;标签labelop所显示的算术运算符由系统随机生成;标签labeltj显示总题数和答对的题数。
5、思考题
(1)Java的事件处理机制是怎样的?
(2)事件和事件适配器的关系是什么?
四、 实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。