《java程序设计第7章.ppt》由会员分享,可在线阅读,更多相关《java程序设计第7章.ppt(112页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章章 图形用户界面的设计与实现图形用户界面的设计与实现7.1 图形用户界面核心概念图形用户界面核心概念7.2 容器与布局管理容器与布局管理7.3 常用常用GUI标准组件标准组件7.4 鼠标和键盘事件鼠标和键盘事件7.5 菜单的使用菜单的使用7.6 对话框的使用对话框的使用7.1图形用户界面核心概念图形用户界面核心概念-示例示例容器容器-可以容纳可以容纳GUI部件(按某种布局)部件(按某种布局)-窗体窗体、面板、面板部件部件-部署在容器中,实现某种交互。部署在容器中,实现某种交互。-文本框、按纽、标签等文本框、按纽、标签等GUI部件部件图形用户界面核心概念图形用户界面核心概念创建窗体创建窗
2、体方法方法1:Framef=newFrame(“标题标题“)方法方法2:classMyFrameextendsFrame.Framef=newMyFrame(“标题标题“)图形用户界面核心概念图形用户界面核心概念创建创建GUI部件部件创建文本框、按钮、标签创建文本框、按钮、标签TextFieldx=newTextField(10);Buttonb=newButton(“ok”);Labeldis=newLabel(“hint”);图形用户界面核心概念图形用户界面核心概念布局设置布局设置setLayout(newFlowLayout()加入部件加入部件add(部件对象部件对象1););add(部
3、件对象部件对象2););.图形用户界面核心概念图形用户界面核心概念将部件加入窗体容器将部件加入窗体容器处理事件处理事件事件处理事件处理-委托事件处理模型委托事件处理模型事件源-发生事件的GUI部件事件监听者-处理事件-符合相应接口要求图形用户界面核心概念图形用户界面核心概念事件处理事件处理事件委托处理事件委托处理图图图形用户界面核心概念图形用户界面核心概念事件处理事件处理 委托事件处理委托事件处理-过程过程(1)给)给事件源对象事件源对象注册监听者注册监听者button.addActionListener(ActionListenera);(2)给)给监听者监听者编写事件处理代码编写事件处理代
4、码publicvoidactionPerformed(ActionEvente)图形用户界面核心概念图形用户界面核心概念事件处理事件处理(1)事件源对象的容器类作为监听者)事件源对象的容器类作为监听者addActionListener(this);(2)用内嵌类实现)用内嵌类实现addActionListener(newProcess();谁作为监听者合适谁作为监听者合适?-要其要其actionPerformed中方便访问事件处理相关对象中方便访问事件处理相关对象(3)用匿名内嵌类实现)用匿名内嵌类实现addActionListener(newActionListener().);图形用户界面
5、核心概念图形用户界面核心概念演练例子演练例子编程改变编程改变Applet背景的颜色背景的颜色,在在Applet中安排一个中安排一个按钮,每次点击按钮随机换一种新颜色。按钮,每次点击按钮随机换一种新颜色。图形用户界面核心概念图形用户界面核心概念提示提示:颜色由三色构成颜色由三色构成:red,green,blue(0-255)newColor(red,green,blue)用用setBackground(Color)设置背景设置背景作业作业编写一个窗体应用程序,在窗体中安排一个标编写一个窗体应用程序,在窗体中安排一个标签和一个按钮,在标签上显示按钮的点击次数。签和一个按钮,在标签上显示按钮的点击次
6、数。标签初始显示标签初始显示0,以后每点击一次按钮,标签上,以后每点击一次按钮,标签上显示的数值增显示的数值增1。图形用户界面核心概念图形用户界面核心概念7.1.5区分事件源区分事件源编写一个窗体应用程序,在窗体中安排两个文编写一个窗体应用程序,在窗体中安排两个文本框,一个标签,两个标记为本框,一个标签,两个标记为“+”和和“*”的按的按钮,从两个文本框输入两个数,钮,从两个文本框输入两个数,点击点击“+”按钮按钮将将文本框中两个数进行加法运算,结果显示在标签文本框中两个数进行加法运算,结果显示在标签中中;点击点击“*”按钮按钮将文本框中两个数进行乘法运将文本框中两个数进行乘法运算,结果显示在
7、标签中。算,结果显示在标签中。在动作事件处理代码中区分事件源在动作事件处理代码中区分事件源getSource()用来获取事件源对象。用来获取事件源对象。getActionCommand()结果为字符串,用来获取按钮事件对象的命令名结果为字符串,用来获取按钮事件对象的命令名-ActionEvent对象提供方法对象提供方法图形用户界面核心概念图形用户界面核心概念事件处理事件处理 关键代码关键代码publicvoidactionPerformed(ActionEvente)intx1=Integer.parseInt(f1.getText();intx2=Integer.parseInt(f2.ge
8、tText();if(e.getActionCommand().equals(“+”)res.setText(+(x1+x2);elseres.setText(+(x1*x2);7.1.6关于事件适配器类关于事件适配器类Java中为那些具有多个方法的监听者接口提供了中为那些具有多个方法的监听者接口提供了事件适配器类,这个类通常命名为事件适配器类,这个类通常命名为XxxAdapter,在该类中以空方法体实现了相应接口的所有方法,在该类中以空方法体实现了相应接口的所有方法,程序员设计可通过继承适配器类来编写监听者类,程序员设计可通过继承适配器类来编写监听者类,在类中只需给出关心的方法,从而减轻工作
9、量。在类中只需给出关心的方法,从而减轻工作量。例例7-9处理窗体的关闭处理窗体的关闭importjava.awt.*;import.*;importjava.applet.*;publicclassTestFrameextendsAppletpublicvoidinit()newMyFrame();classMyFrameextendsFrameimplementsActionListenerButtonbtn;MyFrame()super(MYWINDOWS);btn=newButton(关闭关闭);setLayout(newFlowLayout();add(btn);btn.addActi
10、onListener(this);addWindowListener(newcloseWin();setSize(300,200);setVisible(true);publicvoidactionPerformed(ActionEvente)if(e.getActionCommand()=关闭关闭)dispose();classcloseWinextendsWindowAdapterpublicvoidwindowClosing(WindowEvente)Windoww=e.getWindow();w.dispose();上机练习上机练习设有一批英文单词存放在一个数组中,编制设有一批英文单词
11、存放在一个数组中,编制一个图形界面程序浏览单词。在界面中安排一一个图形界面程序浏览单词。在界面中安排一个标签显示单词,另有个标签显示单词,另有“上一个上一个”、“下一个下一个”两个按钮实现单词的前后翻动。两个按钮实现单词的前后翻动。7.2布局管理布局管理FlowLayout(流式布局流式布局)BorderLayout(边缘或方位布局边缘或方位布局)GridLayout(网格布局网格布局)CardLayout(卡片式布局卡片式布局)GridBagLayout(网格块布局网格块布局)布局管理布局管理-FlowLayout(流式布局流式布局)-是是Panel的默认布局的默认布局从上到下、左到右排放,
12、放不下再换至下一行从上到下、左到右排放,放不下再换至下一行-不会改变控件的大小不会改变控件的大小。按照参数要求安排部件间的纵横间隔纵横间隔和对齐方式对齐方式publicFlowLayout()居中对齐方式,组件纵横间隔5个像素。publicFlowLayout(intalign,inthgap,intvgap)3个参数分别指定对齐方式、纵、横间距publicFlowLayout(intalign)参数规定对齐方式对齐方式,组件纵横间距纵横间距默认5个像素。布局布局管理管理布局管理布局管理-BorderLayout(边缘或方位布局边缘或方位布局)-是是Frame的默认布局的默认布局将容器内部空间
13、分为东(将容器内部空间分为东(East)、南()、南(South)、西)、西(West)、北()、北(North)、中()、中(Center)五个区域)五个区域布局布局管理管理BorderLayout(边缘或方位布局边缘或方位布局)控件的大小随容器大小改变。控件的大小随容器大小改变。按照参数要求安排部件间的纵横间隔纵横间隔和对齐方式对齐方式publicBorderLayout()()各组件之间的纵横间距为各组件之间的纵横间距为0publicBorderLayout(inthgap,intvgap)2个参数分别指定纵、横间距个参数分别指定纵、横间距加入组件加入组件add(方位名字符串方位名字符串
14、,组件组件)布局管理布局管理GridLayout布局布局把容器的空间分为若干行乘若干列的网格区域组件按从左向右,从上到下的次序被加到各单元格中组件的大小将调整为与单元格大小相同。布局管理布局管理GridLayout构造方法构造方法publicGridLayout()所有组件在一行中。publicGridLayout(introws,intcols)通过参数指定布局的行和列数。publicGridLayout(introws,intcols,inthgaps,intvgaps)指定划分的行列数以及组件间的水平和垂直间距。布局管理布局管理GridLayout布局布局加入组件加入组件add(组件名组
15、件名)publicvoidinit()this.setLayout(newGridLayout(3,3,10,10);for(inti=1;i=9;i+)this.add(newButton(Button#+i);布局布局管理管理如何布局如何布局?CardLayout布局布局 加入的部件叠成卡片的形式加入的部件叠成卡片的形式构造方法构造方法publicCardLayout()显示组件将占满整个容器,不留边界不留边界。publicCardLayout(inthgap,intvgap)容器边界分别留出水平和垂直间隔,组件占中央。组件加入组件加入add(字符串字符串,组件名组件名)其中,字符串用来标
16、识卡片名称。布局布局管理管理CardLayout布局布局-卡片翻动卡片翻动show(容器容器,字符串字符串):显示指定名称的卡片:显示指定名称的卡片first(容器容器):显示第一块卡片:显示第一块卡片last(容器容器):显示最后一块卡片:显示最后一块卡片next(容器容器):显示下一块卡片:显示下一块卡片布局管理布局管理常用常用GUI标准组件标准组件7.3常用常用GUI标准组件标准组件Component类类(抽象类)抽象类)ColorgetBackground():获取部件的背景色获取部件的背景色FontgetFont():获取部件的显示字体获取部件的显示字体GraphicsgetGrap
17、hics():获取部件的获取部件的Graphics属性对象属性对象voidrepaint(intx,inty,intwidth,intheight):对部件的特定对部件的特定区域进行重新绘图区域进行重新绘图voidsetBackground(Colorc):设置部件的背景设置部件的背景voidsetEnabled(booleanb):是否让部件功能有效,在无效是否让部件功能有效,在无效情况下部件变灰情况下部件变灰voidsetFont(Fontf):设置部件的显示字体设置部件的显示字体voidsetSize(intwidth,intheight):设置部件的大小设置部件的大小voidsetVi
18、sible(booleanb):设置部件是否可见设置部件是否可见voidsetForeground(Colorc):设置部件的前景色设置部件的前景色voidrequestFocus():让部件得到焦点让部件得到焦点voidadd(PopupMenupopup):给部件加入弹出菜单:给部件加入弹出菜单常用常用GUI标准组件标准组件文本框文本框(TextField)文本框只能编辑一行数据文本框只能编辑一行数据构造方法有四种构造方法有四种:TextField():构造一个单行文本输入框。:构造一个单行文本输入框。TextField(int):指定长度的单行文本输入框。:指定长度的单行文本输入框。Te
19、xtField(String):指定初始内容的单行文本输入框。:指定初始内容的单行文本输入框。TextField(String,int):指定长度、指定初始内容。:指定长度、指定初始内容。常用常用GUI标准组件标准组件tf1=newTextField();tf2=newTextField(,20);tf3=newTextField(Hello!);tf4=newTextField(Hello,30);常用方法常用方法:setEchoChar(*)设置回显字符设置回显字符getText():获取输入框中的数据:获取输入框中的数据setText():往输入框写入数据:往输入框写入数据isEdita
20、ble():判断输入框是否可编辑。:判断输入框是否可编辑。文本框文本框(TextField)文本框文本框(TextField)-事件事件ActionEvent事件事件-在文本框按回车键时引发在文本框按回车键时引发注册:addActionListener();接口:ActionListener方法:publicvoidactionPerformed(ActionEvente)TextEvent事件事件-对文本输入部件数据更改操作对文本输入部件数据更改操作(添加、修改、删除)(添加、修改、删除)注册:注册:addTextListener()()接口:接口:TextListener方法:方法:pub
21、licvoidtextValueChanged(TextEvente)常用常用GUI标准组件标准组件 练习练习:验证密码域只能输入数字字符验证密码域只能输入数字字符publicvoidtextValueChanged(TextEvente)Strings=pass.getText();charlast=s.charAt(s.length()-1);if(!Character.isDigit(last)hint.setText(只能是数字,重输:只能是数字,重输:);pass.setText();文本域文本域(TextArea)特点特点1:可以编辑多行文字:可以编辑多行文字构造方法有四种构造方法
22、有四种:TextArea():构造一个文本域。TextArea(int,int):构造一个指定长度和宽度的文本域。TextArea(String):构造一个显示指定文字的文本域。TextArea(String,int,int):按指定长度、宽度和默认值构造多行文本域。特点特点2:在已有内容的基础上补充新数据:在已有内容的基础上补充新数据append(Strings):将字符串添加到文本域的末尾insert(Strings,intindex):将字符串插入到文本域的指定位置常用常用GUI标准组件标准组件 思考练习思考练习在图形界面中,安排一个文本框和文本域。将在图形界面中,安排一个文本框和文本域
23、。将文本框键入的字符同时显示在文本域中,也既同文本框键入的字符同时显示在文本域中,也既同步显示。步显示。常用常用GUI标准组件标准组件1.选择事件选择事件(ItemEvent)类类publicItemSelectablegetItemSelectable()publicObjectgetItem()publicintgetStateChange()返回值:返回值:ItemEvent.SELECTED:代表选项被选中。代表选项被选中。ItemEvent.DESELECTED:代表选项被放弃不选。:代表选项被放弃不选。常用常用GUI标准组件标准组件7.3.3选项按钮与列表的使用选项按钮与列表的使用
24、2复选按钮复选按钮(Checkbox)举例举例:Checkboxbackg=newCheckbox(背景色背景色);常用方法常用方法booleangetState():获取复选按钮的选中状态,返回获取复选按钮的选中状态,返回true代表按钮被选中代表按钮被选中voidsetState(booleanvalue):设置复选按钮的状态,:设置复选按钮的状态,vlaue为为true表示选中。表示选中。事件响应事件响应itemStateChanged(ItemEvente)方法方法通过通过e.getItemSelectable()获得事件源对象引用获得事件源对象引用调用调用getState()获取事件
25、获取事件源对象的状态。源对象的状态。常用常用GUI标准组件标准组件例例7-11一个简单的多选题练习程序一个简单的多选题练习程序常用常用GUI标准组件标准组件例例7-11一个简单的多选题练习程序一个简单的多选题练习程序importjava.awt.*;importjava.applet.*;import.*;publicclassFuXuanextendsAppletimplementsActionListenerStringquestion=Javatestquestion1nA.choice1nB.choice2nC.choice3,Javatestquestion2nA.goodnB.ba
26、dnC.luck;Stringch=A,B,C;Stringanswer=AB,BC;Checkboxcb=newCheckbox3;Labelhint;TextAreacontent;intbh=0;Buttonok,next,previous;常用常用GUI标准组件标准组件publicvoidinit()setLayout(newBorderLayout();content=newTextArea(10,50);add(Center,content);content.setText(questionbh);Panelp=newPanel();p.setLayout(newGridLayou
27、t(2,1);Panelp1=newPanel();for(inti=0;ich.length;i+)cbi=newCheckbox(chi);p1.add(cbi);常用常用GUI标准组件标准组件p.add(p1);Panelp2=newPanel();ok=newButton(确定确定);p2.add(ok);hint=newLabel(对错提示对错提示);p2.add(hint);next=newButton(下一题下一题);p2.add(next);previous=newButton(上一题上一题);p2.add(previous);p.add(p2);add(South,p);ne
28、xt.addActionListener(this);previous.addActionListener(this);ok.addActionListener(this);常用常用GUI标准组件标准组件publicvoidactionPerformed(ActionEvente)if(e.getSource()=ok)Strings=;for(inti=0;ich.length;i+)if(cbi.getState()s=s+cbi.getLabel();if(s.equals(answerbh)hint.setText(对对);elsehint.setText(错错);例例7-11(续续4
29、)解答判定)解答判定elseif(e.getSource()=next)if(bh0)bh-;content.setText(questionbh);例例7-11(续续5)/翻动试题翻动试题常用常用GUI标准组件标准组件3.单选按钮单选按钮(CheckBoxGroup)使用复选框组,可以实现单选框的功能。例如:使用复选框组,可以实现单选框的功能。例如:CheckboxGroupstyle=newCheckboxGroup();Checkboxp=newCheckbox(普通普通,true,style);Checkboxb=newCheckbox(黑体黑体,false,style);Checkb
30、oxi=newCheckbox(斜体斜体,false,style);【注意注意】把把CheckboxGroup加入容器时必须将每个加入容器时必须将每个Checkbox对象逐一加入容器,不能使用对象逐一加入容器,不能使用CheckboxGroup对象一次性加入。对象一次性加入。将按钮组合将按钮组合常用常用GUI标准组件标准组件事件编程处理事件编程处理每个单选按钮要单独注册监听者每个单选按钮要单独注册监听者在事件处理代码中通过在事件处理代码中通过CheckboxGroup的对象的的对象的getSelectCheckbox()方法可获取当前被选中的选项按钮对象,要设置方法可获取当前被选中的选项按钮对
31、象,要设置选项按钮选项按钮i为选中状态可通过方法为选中状态可通过方法setSelectedCheckbox(i)。选项按钮的其他方法:选项按钮的其他方法:getLabel()方法可获取选项按钮的标识方法可获取选项按钮的标识getState()可判选项按钮对象是否选中。可判选项按钮对象是否选中。setState()设置某个单选按钮为选中状态。设置某个单选按钮为选中状态。常用常用GUI标准组件标准组件例例7-12用单选按钮控制画笔的颜色用单选按钮控制画笔的颜色importjava.awt.*;importjava.applet.*;import.*;publicclassChangeColorex
32、tendsAppletimplementsItemListenerStringdes=红色红色,兰色兰色,绿色绿色,白色白色,灰色灰色;Colorc=Color.red,Color.blue,Color.green,Color.white,Color.gray;ColordrawColor=Color.black;常用常用GUI标准组件标准组件publicvoidinit()CheckboxGroupstyle=newCheckboxGroup();for(inti=0;ides.length;i+)Checkboxone=newCheckbox(desi,false,style);one.a
33、ddItemListener(this);add(one);常用常用GUI标准组件标准组件/*根据根据drawColor的颜色绘制文字的颜色绘制文字*/publicvoidpaint(Graphicsg)g.setColor(drawColor);g.setFont(newFont(变色字变色字,Font.BOLD,24);g.drawString(变色字变色字,80,80);常用常用GUI标准组件标准组件根据选择的按钮设置根据选择的按钮设置drawColor的颜色值的颜色值publicvoiditemStateChanged(ItemEvente)Checkboxtemp=(Checkbox
34、)e.getItemSelectable();for(inti=0;ides.length;i+)if(temp.getLabel()=desi)drawColor=ci;repaint();break;常用常用GUI标准组件标准组件4下拉列表下拉列表(Choice)“多选一多选一”控件控件下拉列表是作为一个整体加入到容器,各个列表下拉列表是作为一个整体加入到容器,各个列表元素不是独立的操作对象。元素不是独立的操作对象。下拉列表也是产生下拉列表也是产生ItemEvent类的选择事件类的选择事件对下拉列表的选项值的判定处理有两种方法可供对下拉列表的选项值的判定处理有两种方法可供选择:一种是根据选
35、项在列表中的序号,即通过选择:一种是根据选项在列表中的序号,即通过getSelectedIndex()方法;另一种是通过方法;另一种是通过getSelectItem()方法获取列方法获取列表项对应的字符串表项对应的字符串。常用常用GUI标准组件标准组件相关方法:相关方法:select(intindex)和和select(Stringitem):强制将某列表:强制将某列表项定为选中状态;项定为选中状态;add(Stringitem)和和insert(Stringitem,intindex):添:添加新元素到列表中加新元素到列表中remove(intindex)和和remove(Stringite
36、m):删除某个:删除某个列表元素列表元素removeAll():删除所有元素。:删除所有元素。常用常用GUI标准组件标准组件例例7-13用下拉列表控制用下拉列表控制Applet的背景变化的背景变化importjava.awt.*;importjava.applet.*;import.*;publicclassChangeColor2extendsAppletimplementsItemListenerStringdes=红色红色,兰色兰色,绿色绿色,白色白色,灰色灰色;Colorc=Color.red,Color.blue,Color.green,Color.white,Color.gray;
37、publicvoidinit()Choicecolor=newChoice();for(inti=0;ides.length;i+)color.add(desi);color.addItemListener(this);add(color);常用常用GUI标准组件标准组件例例7-13(续)续)publicvoiditemStateChanged(ItemEvente)Choicetemp=(Choice)e.getItemSelectable();for(inti=0;ides.length;i+)if(temp.getSelectedIndex()=i)setBackground(ci);b
38、reak;常用常用GUI标准组件标准组件5.列表(列表(List)列表与下拉列表的区别有两点:列表与下拉列表的区别有两点:一是列表可以在屏幕上看到一定数目的选择项,一是列表可以在屏幕上看到一定数目的选择项,而下拉列表只能看到一项;而下拉列表只能看到一项;另一点用户可能允另一点用户可能允许同时选择列表中的多项,而下拉列表只能选一许同时选择列表中的多项,而下拉列表只能选一项。项。MyList=newList(4,true);给列表添加选项用给列表添加选项用add方法方法下拉列表的方法均可用于列表对象,另外,由于下拉列表的方法均可用于列表对象,另外,由于列表支持多选,因此,列表中还提供有列表支持多选
39、,因此,列表中还提供有getSelectItems()方法和方法和getSelectedIndexs()方法方法,它们返回的均是它们返回的均是数组,分别代表哪些选中的选项的字符串和序号。数组,分别代表哪些选中的选项的字符串和序号。常用常用GUI标准组件标准组件列表可以产生两类事件:列表可以产生两类事件:ItemEvent类选择事件,当单击某选项时触发。类选择事件,当单击某选项时触发。ActionEvent类动作事件。当双击某选项触发。类动作事件。当双击某选项触发。值得注意的是,双击事件不能覆盖单击事件,当值得注意的是,双击事件不能覆盖单击事件,当用户双击一个选项时,首先产生双击、然后产生用户双
40、击一个选项时,首先产生双击、然后产生单击。单击。例例7-14假设有一个发文系统,需要假设有一个发文系统,需要将一份文件发给多个单位将一份文件发给多个单位importjava.applet.*;importjava.awt.*;import.*;publicclassTestListextendsAppletimplementsActionListener,ItemListenerListmyList;Labelresult;Stringunit=总务处总务处,教务处教务处,工会工会,科研处科研处,信息学院信息学院,机械学院机械学院;publicvoidinit()myList=newList(
41、5,true);for(inti=0;iunit.length;i+)myList.add(uniti);add(myList);myList.addActionListener(this);myList.addItemListener(this);/*响应动作事件响应动作事件*/publicvoidactionPerformed(ActionEvente)if(e.getSource()=myList)showStatus(您双击了选项您双击了选项+e.getActionCommand();/*响应选择事件响应选择事件*/publicvoiditemStateChanged(ItemEven
42、te)StringsList;Stringstr=;Listtemp=(List)(e.getItemSelectable();sList=temp.getSelectedItems();for(inti=0;isList.length;i+)str=str+sListi+;showStatus(您选择了选项:您选择了选项:+str);1、创建滚动条、创建滚动条滚动条按方向分垂直和水平两种。例如,以下代滚动条按方向分垂直和水平两种。例如,以下代码创建一个水平滚动条码创建一个水平滚动条:ScrollbarmySlider=newScrollbar(Scrollbar.HORIZONTAL,0,1
43、,0,255);有关说明:有关说明:(1)第)第1个参数为常量,代表水平滚动条,如果是个参数为常量,代表水平滚动条,如果是垂直滚动条,则为垂直滚动条,则为Scrollbar.VERTICAL;(2)第)第2个参数代表为初始值;个参数代表为初始值;(3)第)第3个参数代表滚动条的滑块长度;个参数代表滚动条的滑块长度;(4)第)第4、5个参数分别代表滚动条的最小和最大值,个参数分别代表滚动条的最小和最大值,由于滚动条滑块要占一定宽度,所以滚动条的实由于滚动条滑块要占一定宽度,所以滚动条的实际最大值际最大值=最大值最大值-滑块长度。滑块长度。7.3.4滚动条的使用滚动条的使用2、滚动条的事件处理、滚
44、动条的事件处理AdjustmentEvent(调整值变化事件调整值变化事件)是在滚动条滑是在滚动条滑块移动时引发。在滚动条上可通过多种操作来改块移动时引发。在滚动条上可通过多种操作来改变其滑块位置,例如:用户可以拖动滚动条的滑变其滑块位置,例如:用户可以拖动滚动条的滑块,点击块增量区或上、下三角按钮均会导致滑块,点击块增量区或上、下三角按钮均会导致滑块的变化,而且移动的步长不同,按块的变化,而且移动的步长不同,按PageUp和和PageDown键也相当于点击滚动条的块增量区键也相当于点击滚动条的块增量区使用使用addAdjustmentListener()方法给滚动条注()方法给滚动条注册监听
45、者,监听者要求实现册监听者,监听者要求实现AdjustmentListener接接口,该接口中包含如下方法:口,该接口中包含如下方法:publicvoidadjustmentValueChanged(AdjustmentEvente)滚动条编程的要点是对滚动条所代表的值的获取与滚动条编程的要点是对滚动条所代表的值的获取与设置,如下方法分别用来获取和设置滚动条的当前设置,如下方法分别用来获取和设置滚动条的当前值:值:publicintgetValue()publicvoidsetValue(intnewValue)如下方法获取事件源和引起值变化的调整类型:如下方法获取事件源和引起值变化的调整类型
46、:AdjustablegetAdjustable()返回引发状态变化的事件源对象。返回引发状态变化的事件源对象。intgetAdjustmentType()返回引发状态变化事件的调整类型返回引发状态变化事件的调整类型调整类型值可通过以下常量进行判断。调整类型值可通过以下常量进行判断。AdjustmentEvent.BLOCK_DECREMENT点击点击下方引取下移下方引取下移AdjustmentEvent.BLOCK_INCREMENT上移上移AdjustmentEvent.TRACK拖动滑块拖动滑块AdjustmentEvent.UNIT_DECREMENT点击下点击下三角按钮三角按钮Adj
47、ustmentEvent.UNIT_INCREMENT点了上点了上三角按钮三角按钮设定和获取滚动条滑块的移动增量值设定和获取滚动条滑块的移动增量值voidsetUnitIncrement(int)/指定单位增量指定单位增量voidsetBlockIncrement(int)/指定块增量指定块增量intgetUnitIncrement()/获取单位增量获取单位增量intgetBlockIncrement()/获取块增量获取块增量例例7-15利用滚动条设计一个调色控制板用来利用滚动条设计一个调色控制板用来调整任意部件的颜色调整任意部件的颜色importjava.applet.*;importjav
48、a.awt.*;import.*;classcolorBarextendsScrollbarpubliccolorBar()super(Scrollbar.HORIZONTAL,0,40,0,295);this.setUnitIncrement(1);this.setBlockIncrement(50);classColorPanelextendsPanelimplementsAdjustmentListenerScrollbarredSlider=newcolorBar();ScrollbargreenSlider=newcolorBar();ScrollbarblueSlider=newc
49、olorBar();Canvasmycanvas=newCanvas();Colorcolor;publicColorPanel()Panelx=newPanel();x.setLayout(newGridLayout(3,2,1,1);x.add(newLabel(red);x.add(redSlider);x.add(newLabel(green);x.add(greenSlider);x.add(newLabel(blue);x.add(blueSlider);setLayout(newGridLayout(2,1,5,5);add(mycanvas);add(x);redSlider.
50、addAdjustmentListener(this);greenSlider.addAdjustmentListener(this);blueSlider.addAdjustmentListener(this);/*滚动条调整时,根据调整值改变画布的颜色滚动条调整时,根据调整值改变画布的颜色*/publicvoidadjustmentValueChanged(AdjustmentEvente)intvalue1,value2,value3;value1=redSlider.getValue();value2=greenSlider.getValue();value3=blueSlider.g