第9章 GUI补充案例.docx
《第9章 GUI补充案例.docx》由会员分享,可在线阅读,更多相关《第9章 GUI补充案例.docx(19页珍藏版)》请在冰豆网上搜索。
![第9章 GUI补充案例.docx](https://file1.bdocx.com/fileroot1/2023-2/1/f1a7e17b-f16c-426d-92bd-160717dc04ed/f1a7e17b-f16c-426d-92bd-160717dc04ed1.gif)
第9章GUI补充案例
第九章GUI
案例9-1AWT事件处理机制
一、案例描述
1、考核知识点
编号:
00109002
名称:
AWT事件处理机制
2、练习目标
掌握如何使用AWT事件处理机制
3、需求分析
事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。
为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。
4、设计思路(实现原理)
1)编写类Example01
2)建立一个窗体,名为“第一个窗体”
3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。
4)通过addWindowListener()方法为事件源注册事件监听器对象。
二、案例实现
import.*;
importclassExample01{
publicstaticvoidmain(String[]args){
;
importclassExample02{
publicstaticvoidmain(String[]args){
;
importclassExample03{
publicstaticvoidmain(String[]args){
finalFramef=newFrame("窗体事件");
(400,300);
(300,200);
(true);
ispose();
}
publicvoidwindowClosed(WindowEvente){
"窗体关闭");
}
});
}
}
运行结果如图9-4所示。
图9-1运行结果
从上图可以看出,当对窗口进行操作时,程序监听到了这些窗体事件。
三、案例总结
在本案例中,通过WindowListener对操作窗口的动作事件进行监听,当接收到特定的动作后,就将所触发事件的名称打印出来。
了解了窗体事件,在以后的编程中,可以根据实际需求,在监听器中自定义窗体的处理事件器。
案例9-4鼠标事件
一、案例描述
1、考核知识点
编号:
00109005
名称:
鼠标事件
2、练习目标
掌握鼠标事件的处理
3、需求分析
在图形用户界面中,用户会经常通过鼠标来进行选择、切换界面等操作,这些操作被定义为鼠标事件,JDK中提供了一个MouseEvent类用于表示鼠标事件。
为了让初学者熟悉鼠标事件的处理。
本案例将演示如何监听鼠标事件。
4、设计思路(实现原理)
1)编写一个类Example04,创建一个窗口。
2)创建按钮对象,并在窗口添加按钮组件。
3)为按钮添加鼠标事件监听器。
4)运行程序生成窗体,用鼠标操作窗口中的按钮,观察控制台的输出。
二、案例实现
import.*;
importclassExample04{
publicstaticvoidmain(String[]args){
finalFramef=newFrame("鼠标事件");
;
importclassExample05{
publicstaticvoidmain(String[]args){
Framef=newFrame("键盘事件");
(newFlowLayout());
(400,300);
(300,200);
TextFieldtf=newTextField(30);
;
importclassExample06{
publicstaticvoidmain(String[]args){
finalFramef=newFrame("流式布局");
;
publicclassExample07{
publicstaticvoidmain(String[]args){
finalFramef=newFrame("边界布局");
(newBorderLayout());
;
publicclassExample08{
publicstaticvoidmain(String[]args){
Framef=newFrame("网格布局");
(newGridLayout(4,3));
;
classLayoutextendsFrame{
publicLayout(Stringtitle){
GridBagLayoutlayout=newGridBagLayout();
GridBagConstraintsc=newGridBagConstraints();
(layout);
=;
;
import.*;
import定义Cardlayout继承Frame类,实现ActionListener接口
classCardlayoutextendsFrameimplementsActionListener{
PanelcardPanel=newPanel();
;
importclassExample11{
publicstaticvoidmain(String[]args){
finalFrameframe=newFrame("验证码");oCharArray();
StringBuildersb=newStringBuilder();
for(inti=0;i<4;i++){
intpos=;
charc=chars[pos];
(c+"");
}
(),20,30);
;
import.*;
publicclassExample12{
publicstaticvoidmain(String[]args){
JButtonbtn=newJButton("模式对话框");
JFramef=newJFrame("模式对话框测试");
(300,250);
(300,200);
(newFlowLayout());ength==1){
(label);
}
;
publicclassExample13extendsJFrame{
publicExample15(){
("JFrame");
(300,200);
;
import.*;
publicclassExample14extendsJFrame{
publicExample14(){
("滚动面板");
HORIZONTAL_SCROLLBAR_AS_NEEDED);
VERTICAL_SCROLLBAR_ALWAYS);
;
import.*;
publicclassExample15extendsJFrame{
JButtonsendBt;
JTextFieldinputField;
JTextAreachatContent;
publicExample15(){
(newBorderLayout());
chatContent=newJTextArea(12,34);quals("")){
表9-1
;
import.*;
publicclassExample16extendsJFrame{
privateJCheckBoxitalic;
privateJCheckBoxbold;
privateJLabellabel;
publicExample16(){
PLAIN,20));
(label);
;
import.*;
importclassExample17extendsJFrame{
privateButtonGroupgroup;quals(text)){
color=;
}elseif("黄".equals(text)){
color=;
}elseif("蓝".equals(text)){
color=;
}else{
color=;
}
(color);
}
});
}
publicstaticvoidmain(String[]args){
newExample17();
}
}
运行结果如图9-21所示:
图9-2运行结果
三、案例总结
1、本案例中,在JPanel面板中放置了“红”、“黄”、“蓝”三个单选按钮,并为这三个按钮注册监听事件,通过判断这两个按钮是否选中来改变面板的颜色。
2、下表列举了创建JRadioButton对象常见的构造方法。
方法描述
功能说明
JRadioButton()
创建一个没有文本信息、初始状态未被选中的单选框
JRadioButton(Stringtext)
创建一个带有文本信息、初始状态未被选定的单选框
JRadioButton(Stringtext,booleanselected)
创建一个具有文本信息,并指定初始状态(选中/未选中)的单选框。
案例9-18JcomboBox下拉列表框的使用
一、案例描述
1、考核知识点
编号:
00109022
名称:
JComboBox组件
2、练习目标
掌握JComboBox下拉列表的使用方法
3、需求分析
JComboBox下拉列表框,会将所有选项折叠在一起,当用户点击组合框时,会出现下拉式的选择列表。
用户可以从中选择一项并显示。
为了让初学者熟悉JComboBox下拉列表框,本案例将演示JComboBox下拉列表框的用法。
4、设计思路(实现原理)
1)编写类Example18,创建JPanel面板。
2)创建一个组合框并为组合框添加选项。
3)为组合框添加事件监听器,所选择的组合框内容会显示在文本框中。
二、案例实现
import.*;
import.*;
publicclassExample18extendsJFrame{
privateJComboBoxcomboBox;quals(item)){
("");
}else{
("您选择的城市是:
"+item);
}
}
});
field=newJTextField(20);
(comboBox);
;
publicclassExample19extendsJFrame{
publicExample19(){
JMenuBarmenuBar=newJMenuBar();
;
publicclassExample20extendsJFrame{
privateJPopupMenupopupMenu;
publicExample20(){
//创建一个JPopupMenu菜单
popupMenu=newJPopupMenu();
//创建三个JMenuItem菜单项
JMenuItemrefreshItem=newJMenuItem("查看");
JMenuItemcreateItem=newJMenuItem("新建");
JMenuItemexitItem=newJMenuItem("退出");
//为exitItem菜单项添加事件监听器
(newActionListener(){
publicvoidactionPerformed(ActionEvente){
(0);
}
});
//往JPopupMenu菜单添加菜单项
(refreshItem);
(createItem);
();
(exitItem);
//为JFrame窗口添加clicked鼠标事件监听器
(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
//如果点击的是鼠标的右键,显示JPopupMenu菜单
if()=={
(),(),());
}
}
});
(300,300);
;
(true);
}
publicstaticvoidmain(String[]args){
newExample20();
}
}
运行程序,生成的窗体如图9-24所示。
图9-3生成的窗体
三、案例总结
1、定义了一个类Example20继承自JFrame。
2、创建了一个JPopupMenu菜单,其增加了refreshItem、createItem和exitItem三个JMenuItem菜单项,菜单项在默认情况下是不可见的,所以要通过调用show(Componentinvoker,intx,inty)方法将菜单项显示出来,参数invoker表示JPopupMenu菜单显示位置的参考组件,x和y表示invoker组件坐标空间中的一个坐标,显示的是JPopupMenu菜单的左上角坐标。
为exitItem菜单项添加了一个ActionListener事件监听器,当点击它时,会退出程序。
代码的第24到31行代码为当前窗口添加了一个鼠标事件监听器,监听鼠标的mouseClicked事件,当鼠标按下时,调用MouseEvent的getButton()判断是否按下了鼠标的右键(BUTTON3),如果是就调用JPopupMenu的show()方法将其显示,并将鼠标点击的坐标作为弹出菜单的左上角坐标。