实验七 基于SWING的图形用户界面GUI设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七基于SWING的图形用户界面GUI设计
一、实验目的
1. 掌握如何使用布局管理器对组件进行管理。
2. 掌握图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法
3. 熟悉Java 的事件处理机制,掌握焦点事件、鼠标事件和键盘事件的处理。
二、实验内容
1.设计一个Windows风格的日历表,通过表格组件和下拉列表组件进行日历的显示。
2.编写华容道智力游戏。通过焦点事件控制人物的颜色,通过键盘事件和鼠标事件来实现人物的移动。
三、实验方案
1. 日历表
要求程序中有一个下拉列表,该列表添加了代表年份的选项,当用户在列表中选择某项后,程序通过表格显示某年各个月份的日历。具体实验步骤由学生自行设计完成。
2. 华容道智力游戏
华容道是我们很熟悉的一个传统智力游戏。要求首先编写一个按钮的子类,该子类创建的对象代表华容道中的人物。通过焦点事件控制人物的颜色,当人物获得焦点时颜色为蓝色,当失去焦点时颜色为灰色。我们通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动,当人物上发生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按键盘上的“↓”键,该人物向下移动。向左、向右和向上的移动原理类似。具体实验步骤由学生自行设计完成。
四、实验提示
1.使用Jtable可以创建一个表格对象。可以使用Jtable的构造方法Jtable(Object data[][],Object columnName[])创建表格,表格的视图将以行和
列的形式显示数组data每个单元中对象的字符串。也就是说,表格视图中对应着data单元中对象的字符串表示。参数columnName用来指定表格的列名。用户在表格单元中输入的数据都被认为是一个Object对象,用户通过表格视图对表格单元中的数据进行编辑,以修改二维数组data中对应的数据。在表格视图中输入或修改数据后,需按Enter键或用鼠标单击表格的单元格确定所输入或修改的结果。当表格需要刷新显示时,让表格调用repaint()方法。
2.使用JcomboBox无参数构造方法可以创建一个不含有任何选项的下拉列表,该列表可以调用addItem(String item)添加选项。注意:当下拉列表还没有包含任何选项时,不要给其注册ItemEvent时间监视器,否则程序运行时会抛出异常。
3.在处理鼠标事件时,程序经常关心鼠标在当前组件坐标系中的位置。鼠标事件调用getX()方法返回触发当前鼠标事件时鼠标指针在事件源坐标系中的x坐标;鼠标事件调用getY()方法返回触发当前鼠标事件时鼠标指针在事件源坐标系中的y坐标;
4.组件可以触发焦点事件。组件可以使用addFocustListener(FocusListener listener)方法增加焦点事件监视器。当组件具有焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。创建监视器的类必须实现FocusListener接口,该接口有两个方法:public void focusGained(FocusEvent e)
public void focusLost(FocusEvent e)
当组件从无输入焦点变成有输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法focusGained(FocusEvent e);当组件从有输入焦点变成无输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法focusLost(FocusEvent
e)
5.当一个组件处于激活状态时,组件可以成为触发KeyEvent事件的事件源。当某个组件处于激活状态时,用户敲击键盘上一个键就导致这个组件触发KeyEvent事件。
五、实验结果
编写源程序并上机调试通过,根据实验过程填写实验报告,并上交源程序代码。