




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章AWT组件及事件处理(三),本次课教学目标,掌握文本区的事件处理方法掌握面板的使用熟悉各种布局方式,能根据实际需要选择合适的布局方式,文本区上的TextEvent事件,当改变文本区的内容时,发生TextEvent事件向文本区注册监视器:addTextListener(监视器)处理发生TextEvent事件的接口是TextListenerTextListener中只有一个方法:textValueChanged(TextEvente),例1:如下图所示,当在文本框中输入信息按回车时,将所输入内容显示在文本区2中;当在文本区1中输入信息时,文本区2中的字符跟随文本区1中的输入而变化。,importjava.awt.*;importjava.awt.event.*;importjava.applet.*;publicclassUseTextEventextendsAppletimplementsActionListener,TextListenerTextFieldtf;TextAreata1,ta2;publicvoidinit()tf=newTextField(25);ta1=newTextArea(4,25);ta2=newTextArea(4,25);tf.addActionListener(this);ta1.addTextListener(this);add(tf);add(ta1);add(ta2);,publicvoidactionPerformed(ActionEvente)if(e.getSource()=tf)ta2.setText(tf.getText();publicvoidtextValueChanged(TextEvente)if(e.getSource()=ta1)ta2.setText(ta1.getText();,面板,面板(Panel):是最简单的容器类(Container的子类),程序可以在面板提供的空间里放置任意组件及其它的面板。Panel():使用默认的布局管理器创建一个新的面板。默认的布局管理器为FlowLayout。滚动面板(ScrollPane)也是Container的子类,但只能向滚动面板中添加一个组件。ScrollPane():创建滚动面板,滚动条初始不可见。ScrollPane(inta):用指定的参数创建一个滚动面板。a的取值为:Scrollpane.SCROLLBARS-ALWAYSScrollpane.SCROLLBARS-AS-NEEDEDScrollpane.SCROLLBARS-NEVER,例2:程序的运行效果如下图所示。,importjava.awt.*;importjava.awt.event.*;classMypanelextendsPanelimplementsActionListenerButtonbutton1,button2;ColorbackColor;Mypanel()button1=newButton(确定);button2=newButton(取消);add(button1);add(button2);setBackground(Color.pink);backColor=getBackground();button1.addActionListener(this);button2.addActionListener(this);,publicvoidactionPerformed(ActionEvente)if(e.getSource()=button1)setBackground(Color.cyan);elseif(e.getSource()=button2)setBackground(backColor);,classWindowPanelextendsFrameimplementsActionListenerMypanelpanel1;Panelp;ScrollPanescrollpane;Buttonbutton;WindowPanel(Strings)super(s);setLayout(newFlowLayout();panel1=newMypanel();p=newPanel();scrollpane=newScrollPane(ScrollPane.SCROLLBARS_ALWAYS);p.add(newButton(one);p.add(newButton(two);p.add(newButton(three);p.add(newButton(four);scrollpane.add(p);button=newButton(退出);add(panel1);add(scrollpane);add(button);button.addActionListener(this);setBounds(60,60,200,200);setVisible(true);validate();,滚动面板中只能放一个组件,所以先将4个按钮放面板中,再将面板放滚动面板中。,publicvoidactionPerformed(ActionEvente)System.exit(0);publicclassUsePanelpublicstaticvoidmain(Stringargs)newWindowPanel(面板的使用);,布局,布局设计即控制组件在容器中的位置容器可以使用:setLayout(布局对象);来设置自己的布局。java.awt包中的布局类有:FlowLayoutBorderLayoutCardLayoutGridLayoutjava.swing.border包中的布局类有:BoxLayout,FlowLayout布局(按行/流式布局):是最简单的布局管理器,也是AWT中面板类采用的缺省布局方式。它的布局原则是将组件从左向右、从上向下排列,如果本行放不下这个组件,就放入下一行,每一行中的组件都居中对齐,组件之间的默认水平和垂直间隙是5个像素。其构造方法如下:FlowLayout():构建一个新的按行布局管理器,中央对齐,对象之间以默认的5个像素点水平和垂直间隔。FlowLayout(intalign):构建一个新的按行布局管理器,通过align设置对齐方式,对象之间以默认的5个像素点水平和垂直间隔。,Align的值可为:FlowLayout.LEFTFlowLayout.CENTERFlowLayout.RIGHTFlowLayout(intalign,inthgap,intvgap):构建一个新的按行布局管理器,通过align设置对齐方式,对象之间以hgap单元水平间隔并以vgap单元垂直间隔。成员方法:setAlignment(intalign)/重新设置布局的对齐方式setHgap(inthgap)/重新设置布局的水平间隙setVgap(intvgap)/重新设置布局的垂直间隙,例3:使用FlowLayout布局放置10个组件,要求组件左对齐,组件之间的水平间隔为2个像素,垂直间隔为8个像素。,importjava.awt.*;classWindowFlowextendsFrameWindowFlow(Strings)super(s);FlowLayoutflow=newFlowLayout(FlowLayout.LEFT,2,8);setLayout(flow);for(inti=1;i=10;i+)Buttonb=newButton(iam+i);add(b);setBounds(100,100,250,200);setVisible(true);publicclassFlowLayoutDemopublicstaticvoidmain(Stringargs)WindowFlowwin=newWindowFlow(FlowLayout布局窗口);,BorderLayout布局(边界式布局):是Window型容器的默认布局,将一个容器分为北(NORTH)、南(SOUTH)、东(EAST)、西(WEST)和中央(CENTER)五部分。其构造方法如下:BorderLayout():构建一个新的边界式布局,对象之间没有间隔。BorderLayout(inthgap,intvgap):构建一个新的边界式布局,对象之间的水平间隔为hgap,垂直间隔为vgap。,说明:要使用“边界式布局设置”时,必须先产生BorderLayout类的对象,再将此对象传给setLayout()方法,即可将容器设置为“边界式布局”。1、容器.setLayout(newBorderLayout();2、容器.add(BorderLayout.CENTER,组件1);或容器.add(组件1,BorderLayout.NORTH);或容器.add(“South”,组件1);在边界式布局中,每个区域只能放一个组件,该组件将占据整个区域。,例4:实现上图的布局效果。importjava.awt.*;importjava.awt.event.*;importjava.applet.*;publicclassBorderDemoextendsAppletpublicvoidinit()setFont(newFont(,Font.ITALIC,30);setLayout(newBorderLayout();add(North,newButton(北);add(South,newButton(南);add(West,newButton(西);add(East,newButton(东);add(Center,newButton(中);,CardLayout(卡片式布局)将每个组件看作一张卡片,一个容器中可以加入多张卡片,但每次只有一个可见。也称“多层页面设置”,它把每一个组件都视为容器中的一层,每一个组件都会布满整个容器。这些组件都会赋予一个名称,然后再依这个名称来控制组件是否显示。假设有一个容器con,使用CardLayout的一般步骤:1、创建CardLayout布局对象如:CardLayoutcard=newCardLayout();2、使用setLayout()为容器设置布局如:con.setLayout(card);,3、容器调用add(Strings,Componentb)方法添加组件,并给出了显示该组件的代号s(别名)。最先加入的为第1张,依次排序.4、该CardLayout对象调用下列方法可以显示组件:card.first(con);移到con的第一个组件;card.last(con);移到con的最后一个组件;card.next(con);移到当前显示组件的下一个组件;card.previous(con);移到当前显示组件的前一个组件;card.show(con,s);显示指定的组件。,例5:一个使用CardLayout的简单例子,单击其上的按钮,在图中的两个画面间转换。,importjava.awt.*;importjava.awt.event.*;importjava.applet.*;publicclassCardDemoextendsAppletimplementsActionListenerButtonb1=newButton(显示第二张卡片);Buttonb2=newButton(显示第一张卡片);Panelp1=newPanel();Panelp2=newPanel();CardLayoutcl=newCardLayout();publicvoidinit()setLayout(cl);add(card1,p1);/p1为第一张卡片add(card2,p2);/p2为第二张卡片p1.add(newLabel(第一张卡片);p1.add(b1);/第一张卡片加入标签和按钮p2.add(newLabel(第二张卡片);p2.add(b2);/第二张卡片加入标签和按钮b1.addActionListener(this);b2.addActionListener(this);,publicvoidactionPerformed(ActionEvente)if(e.getSource()=b1)cl.show(this,card2);/显示第二张卡片elsecl.show(this,card1);/显示第一张卡片,GridLayout布局(网格式布局):将容器划分成网格状,每一个组件按照添加的顺序从左向右、从上向下地占据一个单元。在GridLayout中,组件添加的顺序相当重要。下图采用23的网格布局的结果。,GridLayout的构造方法如下:publicGridLayout():构造一个GridLayout布局管理器,行数为1;publicGridLayout(introws,intcols):构造一个GridLayout布局管理器,两个int类型的参数分别表示行数、列数;publicGridLayout(introws,intcols,inthgap,intvgap):构造一个GridLayout布局管理器,前两个int类型的参数分别表示行数、列数,后两个int类型参数表示组件之间水平、垂直间隔像素数。例如:setLayout(newGridLayout(2,3,5,10);将横向间隔设置成5个像素,把纵向间隔设置成10个像素。,例6:上图对应的程序代码importjava.awt.*;importjava.applet.*;publicclassGridDemoextendsAppletpublicvoidinit()setLayout(newGridLayout(2,3,20,35);add(newButton(Button1);add(newButton(Button2);add(newButton(Button3);add(newButton(Button4);add(newButton(Button5);add(newButton(Button6);,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电瓶电池知识培训内容课件
- 高空吊物安全知识培训课件
- 北京市社工证报考试卷及答案
- URAT1-inhibitor-13-生命科学试剂-MCE
- Dimethenamid-d3-生命科学试剂-MCE
- 北京安全员a考试题库及答案
- 软件开发服务合同(编号5)
- 护士转正考试题及答案
- 个人与团队管理机考试题及答案
- 真菌学考试题及答案
- 《福建省城镇道路清扫保洁作业指导价》
- 悬赏合同范例
- 《小儿腹泻的护理》课件
- 新人教版四年级英语上册教学计划
- 大数据时代到来的成因
- 储能电池模组PACK和系统集成项目可行性研究报告
- 新学期学校导览模板
- 教学常规管理要求
- 标准普尔《信用评级》方法概要
- 2024长沙劳动合同范本长沙劳动合同样本
- 2024年小学一年级新生入学开学第一课培训课件
评论
0/150
提交评论