Java就业培训教程第九章Word文档下载推荐.docx
- 文档编号:18323594
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:38
- 大小:246.61KB
Java就业培训教程第九章Word文档下载推荐.docx
《Java就业培训教程第九章Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java就业培训教程第九章Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
setSize(80,30);
}
protectedvoidprocessMouseEvent(MouseEvente)
if(e.getID()==MouseEvent.MOUSE_PRESSED)
{
bStart=true;
startTime=endTime=System.currentTimeMillis();
repaint();
newThread(this).start();
}
elseif(e.getID()==MouseEvent.MOUSE_RELEASED)
bStart=false;
super.processMouseEvent(e);
publicvoidpaint(Graphicsg)
SimpleDateFormatsdf=newSimpleDateFormat("
HH:
mm:
ss"
);
DateelapsedTime=null;
try
elapsedTime=sdf.parse("
00:
00"
}catch(Exceptione){}
elapsedTime.setTime(endTime-startTime+
elapsedTime.getTime());
Stringdisplay=sdf.format(elapsedTime);
g.drawRect(0,0,78,28);
g.fill3DRect(2,2,75,25,true);
g.setColor(Color.RED);
g.drawString(display,10,20);
publicvoidrun()
while(bStart)
try
{
Thread.sleep(500);
}catch(Exceptione){e.printStackTrace();
}
endTime=System.currentTimeMillis();
publicclassTestStopWatch
publicstaticvoidmain(String[]args)
Framef=newFrame("
StopWatch"
f.add(newStopWatch());
f.setSize(200,200);
f.setVisible(true);
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
编译并运行这个程序,你一定要用鼠标按住计时器部件几秒钟,你就能看到我们期望的效果了,如图9.2所示。
图9.2
如果你想让这个计时器部件尽可能满足更多的应用需求,你还需要增加一些功能,如允许用户设置文本的颜色,文本的大小随部件大小的改变而改变等。
9.1.3Checkbox
如果你熟悉Windows的应用,对单选按钮和多选按钮一定不会陌生,这两种按钮都有选中和不选两种状态,如图9.3所示。
对多选按钮来说,如果有多个这样的按钮,每个按钮之间没有制约关系,可以同时选中其中的多个。
而单选按钮则要求有一组按钮,这一组按钮中同时只能有一个为选中状态。
Java里提供的这个Checkbox类来建立单选按钮和多选按钮,Checkbox的使用很容易,如果要创建多选按钮,我们只要使用publicCheckbox(String
label,boolean
state)这个构造函数来创建Checkbox对象就行了,创建多选按钮要用到两个参数,前一个是选框旁边的说明文字,后一个参数决定选框是否默认被选定。
因为创建单选按单钮需要一组按钮,所以在创建单选按钮时,我们还需要指定这个按钮所属于的组,使用
publicCheckbox(String
label,boolean
state,CheckboxGroup
group)
这个构造函数创建的就是单选按钮。
其中,CheckboxGroup类对象指定了这个单选按钮所属于的组。
对一般的程序来说,需要处理单选按钮和多选按钮的ItemEvent事件,从而获得用户选择的结果。
处理ItemEvent事件的监听器接口为ItemListener,其中只有一个itemStateChanged方法,显然,ItemEvent是一种语义事件。
下面是一段创建多选按钮和单选按钮以及相关事件处理的程序代码:
TestCheckbox.java
publicclassTestCheckbox
Checkboxcb1=newCheckbox("
你喜欢我吗?
"
true);
CheckboxGroupcbg=newCheckboxGroup();
Checkboxcb2=newCheckbox("
喜欢"
cbg,true);
Checkboxcb3=newCheckbox("
不喜欢"
cbg,false);
publicvoidinit()
{
Framef=newFrame("
TestCheckBox"
//创建FlowLayout布局管理器,关于布局管理器,本章后面有专门的讲解,看不明白//的读者暂时可以不去下面两句代码的作用。
FlowLayoutfl=newFlowLayout();
f.setLayout(fl);
f.add(cb1);
f.add(cb2);
f.add(cb3);
cb1.addItemListener(newCbItemListener());
cb2.addItemListener(newCbItemListener());
cb3.addItemListener(newCbItemListener());
f.setBounds(0,0,300,100);
f.addWindowListener(newWindowAdapter()
});
classCbItemListenerimplementsItemListener
publicvoiditemStateChanged(ItemEvente)
Checkboxcb=(Checkbox)e.getItemSelectable();
if(cb.getLabel().equals("
))
if(cb.getState()==true)
System.out.println("
我很高兴"
else
我很伤心"
}
/*elseif(cb.getLabel().equals("
if(e.getStateChange()==ItemEvent.SELECTED)
我也喜欢你"
我也不喜欢你"
}*/
else
Checkboxcbx=cbg.getSelectedCheckbox();
if(cbx!
=null)
System.out.println(cbx.getLabel());
publicstaticvoidmain(String[]args)
newTestCheckbox().init();
程序运行效果如图9.3所示:
图9.3
如果我们用注释的程序代码来处理单选按钮,需要为每一个单选按钮都编写一段这样的代码,如果按钮的个数较多,程序就比较臃肿,但从这段注释代码中,读者可以了解到对同一问题的多种处理方式,也可以在正好有这方面的需要时参考。
如果我们不想直接处理这些单选按钮的事件,而是在别的部件的事件处理代码中收集这些单选按钮的选择结果。
譬如,我们经常在最后单击ok按钮的事件中再去收集设置对话框上的所有部件的设置结果,我们使用类似程序中else部分的代码,就是一个不错的方法。
9.1.4Choice
Choice类用来制作用于单选的下拉列表,用起来也比较容易,来看这段程序:
TestChoice.java
publicclassTestChoice
Choicech=newChoice();
//创建Choice对象
TestChoice()
ch.add("
choice1"
//用add方法向列表里加入选项
choice2"
choice3"
TestChoice"
f.add(ch);
//把列表加入到窗口
f.setBounds(0,0,200,100);
f.addWindowListener(newWindowAdapter()
newTestChoice();
如图9.4所示是程序执行后展开列表的情况:
图9.4
9.1.5菜单
一个完整的菜单系统由菜单条、菜单和菜单项组成。
他们与菜单的对应关系如图9.5所示:
图9.5
在图中,File、Edit、Tools、Help各项叫做菜单,这些顶层菜单共同组合成菜单条,在File项的下拉菜单中New、Open等各项叫做菜单项。
Java中与菜单相关的类主要有三个MenuBar(菜单条)、Menu(菜单)、MenuItem(菜单项)。
我们来看看完成图9.5的菜单系统的程序代码。
TestMenuBar.java
publicclassTestMenuBar
MenuBarmenubar=newMenuBar();
//创建菜单条对象
MenufileM=newMenu("
File"
//创建各菜单
MenueditM=newMenu("
Edit"
MenutoolsM=newMenu("
Tools"
MenuhelpM=newMenu("
Help"
MenuItemfileMI1=newMenuItem("
New"
//创建各菜单项
MenuItemfileMI2=newMenuItem("
Open"
MenuItemfileMI3=newMenuItem("
Save"
CheckboxMenuItemfileMI5=newCheckboxMenuItem("
Quit"
MenufilePrint=newMenu("
print"
//创建子菜单
MenuItemprintM1=newMenuItem("
preview"
MenuItemprintM2=newMenuItem("
setting"
TestMenuBar()
TestMenuBar"
menubar.add(fileM);
//将菜单加入菜单条
menubar.add(editM);
menubar.add(toolsM);
menubar.add(helpM);
fileM.add(fileMI1);
//将菜单项加入file菜单中
fileM.add(fileMI2);
fileM.add(fileMI3);
filePrint.add(printM1);
//将菜单项加入print菜单中
filePrint.add(printM2);
fileM.add(filePrint);
//将print菜单作为一个菜单项加入file菜单中
fileM.addSeparator();
//将一条分割线加入菜单中
fileM.add(fileMI5);
//将菜单项加入菜单中
f.setMenuBar(menubar);
//把整个菜单系统显示在窗口中
f.setBounds(0,0,250,200);
publicvoidwindowClosing(WindowEvente)
System.exit(0);
});
newTestMenuBar();
在窗口上产生菜单的过程非常简单,我们首先要产生MenuBar对象,然后产生Menu对象,最后产生MenuItem对象。
将MenuItem增加到Menu上后,再将Menu增加到MenuBar上,最后将MenuBar挂到Frame窗口上。
要注意的一点是,Menu类本身又是MenuItem的子类,一个Menu对象也可以作为一个菜单项增加到另外一个Menu对象上,这就是我们在上面看到的print子菜单。
关于程序中用到的复选菜单以及菜单分割条,读者不用刻意去记,用到的时候查一下JDK文档就可以找到,另外,在诸如Jbuilder的集成开发环境里,其可视化的生成工具就刻意帮我们产生这样程序代码,我们只要看得懂就行了。
程序不用处理菜单条和菜单的事件,但需要对菜单项的动作进行响应,单击一个菜单项,会发出ActionEvent事件。
我们来看看如何对上面程序中的print子菜单的两个菜单项的动作进行处理,为了直观,下面只给出了新增部分的程序代码。
MenufilePrint=newMenu("
MenuItemprintM1=newMenuItem("
MenuItemprintM2=newMenuItem("
MenuListenerml=newMenuListener();
printM1.addActionListener(ml);
printM2.addActionListener(ml);
classMenuListenerimplementsActionListener
publicvoidactionPerformed(ActionEvente)
if(e.getActionCommand().equals("
System.out.println("
doingpreview"
elseif(e.getActionCommand().equals("
setting"
))System.out.println("
doingsetting"
对于发出ActionEvent事件的组件,我们可以调用setActionCommand方法为其关联一个字符串,用于指示这个动作想执行的命令。
如果程序没有使用setActionCommand方法为组件关联一个命令字符串,则其命令字符串为组件的标题文本。
ActionEvent的getActionCommand方法就是用于返回这个命令字符串的。
使用命令字符串,我们可以用同一菜单来发出连接和断开的命令,在要发出的命令为连接前,我们用MenuItem.setActionCommand指定命令字符串为“connect”,在要发出的命令为断开前,我们指定命令字符串为“disconnect”,事件处理程序通过判断这个命令字符串,就知道该采取哪种动作了。
如果我们程序中的菜单要针对不同的国家,用不同语言文字显示,我们不管菜单项标题上显示的是什么文字,只要用setActionCommand方法为这个菜单项指定一个命令字符串,我们就可以用同样的事件处理程序去处理这个用不同语言文字显示的菜单项的事件。
其实,其他一些组件也可以使用getActionCommand方法,到底有哪些,读者只要在JDK文档中查找getActionCommand就知道了,如图9.6所示:
图9.6
9.1.6Container类
组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。
象我们上面见到的窗口就是一个容器,类Container是所有容器的父类,容器(Container)实际上是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其它组件和容器的功能。
容器类对象可以使用方法add()添加组件。
容器类的类层次图如图9.7所示:
图9.7
Container有几个主要的子类:
Window类,Panel类,ScrollPane类。
9.1.7Window类
Window类是可自由停泊的顶级窗口,它没有边框和菜单条,我们很少直接使用Window类,而是使用它的两个子类:
Frame类和Dialog类。
Frame对象显示效果是一个“窗口”,带有标题和尺寸重置角标,默认初始化为不可见的,可以使用setVisible(true)方法使之变为可见,在前面我们已经多次用到了Frame类。
9.1.8Dialog
Dialog(对话框)一般是一个临时的窗口,用于显示提示信息或接收用户输入。
在对话框中一般不需要菜单条,也不需要改变窗口大小。
有两种模式的对话框,模态对话框和非模态对话框。
模态对话框显示时,用户不能操作其它窗口,直到这个对话框被关闭。
非模态对话框显示时,用户还可以操作其它窗口。
Dialog类用来创建用户对话框,对话框和框架(Frame)比较相似,同样可以在对话框上添加其它的组件。
Dialog类有两种常用的构造方法:
publicDialog(Frame
owner,String
title);
title,boolean
modal)
对话框不能独立存在,它必须有一个上级窗口,这个上级窗口就是对话框的拥有者。
这两个构造方法的第一个参数代表对话框的拥有者,第二个参数是对话框标题,第三个参数设置对话框的模式,如果是true,则为模态对话框,如果是false,则为非模态对话框。
下面是一个关于对话框的例子程序。
TestDialog.java
publicclassTestDialog
TextFieldtf=newTextFiel
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 就业 培训 教程 第九