第6章_Java图形用户界面1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章Java图形用户界面6.4标签、按钮、文本区与动作事件6.5Java应用程序的图形界面6.4标签、按钮、文本区与动作事件回顾:GUI标准组件容器组件基本控制组件6.4.1标签继承自组件类,用来显示一行文本信息。标签类没有事件响应。一、创建标签类对象1.publicLabel()–构造一个没有任何显示文本的标签。2.publicLabel(Stringstr)–构造一个指定显示文本的标签。3.publicLabel(Stringstr,intalignment)Label.LEFT文本居标签左Label.CENTER文本居标签左Label.RIGHT文本居标签右如:LabelL1=newLabel(“请输入一个整数”,Label.RIGHT);二、将一个标签对象放置到容器中使用add()方法。如:add(L1);三、标签类的其它常用方法publicStringgetText()–得到标签文本publicvoidsetText(Stringstr)–为标签设置一个只读文本信息publicvoidsetAlignment(intAlignment)–设置标签的对齐方式。publicvoidsetBackground(Colorc)–设置标签的背景颜色。publicvoidsetForeground(Colorc)–设置标签的文字颜色。例7在小程序中创建和添加标签,并设置“标签2”的背景色和文本颜色。importjava.awt.*;importjava.applet.*;publicclassUseLabelextendsApplet{publicvoidinit(){setBackground(Color.lightGray);LabelL1,L2;L1=newLabel();L1.setText(标签1);L2=newLabel(标签2,Label.RIGHT);L2.setBackground(Color.pink);L2.setForeground(Color.blue);add(L1);add(L2);}}//page7.htmlHTMLHEADTITLEJava小程序/TITLE/HEADBODYAPPLETCODE=UseLabelWIDTH=200HEIGHT=150/APPLET/BODY/HTML运行结果如下:6.4.2按钮继承自组件类,是能通过鼠标单击触发特定动作的组件。一、创建按钮对象1.publicButton()–创建一个没有名称的按钮。2.publicButton(Stringlabel)–创建一个有名称的按钮。例Buttonbtn=newButton(“画圆”);二、将按钮对象添加到容器中使用add()方法。例add(btn);三、处理按钮的动作事件※Java中的事件处理由专门的类完成,所有事件处理的类和接口都在java.awt.event包中。当用户单击按钮后,将引发动作事件(ActionEvent),ActionEvent类自动创建一个动作事件对象e,处理按钮动作事件是通过在程序中实现ActionListener接口中的抽象方法publicvoidactionPerformed(ActionEvente);来完成的。由于ActionEven类和ActionListener接口都在java.awt.event包中,因此,定义一个按钮需要经过下述过程:1.在程序最前面引入事件响应包中的类importjava.awt.event.*;2.程序要实现ActionListener接口publicclass类名extends父类implementsActionListener{...;publicvoidactionPerformed(ActionEvente){//事件处理代码repaint();//需要更新页面时需要此语句}}3.为按钮对象接上一个事件监听器publicvoidaddActionListener(ActionListenerlistener);如:btn.addActionListener(this);这里this表示动作事件响应的程序自身(事件监听者),只有把按钮单击事件注册给事件监听者后,程序才能响应该动作事件。4.按钮事件的处理当用户单击按钮后,将执行actionPerform()方法。单击按钮将引发动作事件,java系统将自动创建ActionEvent类的一个对象e,通过该类的方法getActionCommand()或getSource()可判断事件源,即单击了哪个按钮。if(e.getSource()==btn){//如果单击了按钮btn,执行此处的代码...;}或if(e.getActionCommand().equals(画圆)){//如果单击按钮上的文本等于画圆(即单击了按钮btn),执行此处的代码...;}如:getActionCommand()返回动作命令名称,默认的动作命令名称为所单击按钮的标签文本。例8在小程序中定义两个按钮“画图”和“清除”。单击“画图”,在小程序窗口中画一个蓝色的填充圆;单击“清除”,则清除所画的填充圆。//UseButton.javaimportjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassUseButtonextendsAppletimplementsActionListener{Buttonbtn1,btn2;intk=0;publicvoidinit(){btn1=newButton(画圆);btn1.addActionListener(this);add(btn1);btn2=newButton(清除);btn2.addActionListener(this);add(btn2);}①引入事件响应包中的类②实现actionListener接口③给按钮接上事件监听器publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equals(画圆))k=1;if(e.getSource()==btn2)k=2;repaint();}publicvoidpaint(Graphicsg){if(k==1){g.setColor(Color.blue);g.fillOval(60,30,80,80);}if(k==2){}}}④按钮事件的处理刷新。当执行repaint()方法后,系统自动调用paint()方法。运行结果见演示。6.4.3文本框Component类TextComponent类TextField类TextArea类这里,TextField类的具体实例是一个单行的文本框。TextArea类的具体实例是一个多行的文本域,也称为文本区。文本框可以接收从键盘输入的信息,并能响应ActionEvent事件,即响应文本框中的回车事件(按Enter键)一、创建文本框对象publicTextField()–创建默认长度的文本框publicTextField(intcolumns)-创建能容纳columes个字符的空文本框publicTextField(Strings)–创建含有字符串s的TextField对象二、将文本框添加到容器中使用add()方法。三、处理文本框回车事件与按钮事件处理类似,当用户在文本框输入数据,回车后,将引发一个ActionEvent事件,执行actionPerformed(ActionEvente)方法,因此应将回车后要执行的程序代码放到该方法的方法体中。四、TextField类的一些常用方法publicStringgetText()–得到文本域中的字符串PublicStringgetSelectText()-得到文本域中被选择的字符子串PublicvoidsetText(Strings)–设置文本域中的字符串PublicvoidsetEchoChar(charc)-设置文本域的回显字符。PublicvoidsetEditable(booleanb)-设置文本域的可编辑状态,当b为false时,文本框不允许修改例9编写文本框回车事件的响应程序。在下面的小程序中,创建一个标签和一个文本框,在文本框中分别输入图片名称:1.jpg,2.jpg,…,5.jpg,回车后可显示该图片,图片放到小程序所在的目录。//UseTextField.javaimportjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassUseTextFieldextendsAppletimplementsActionListener{LabelL1;TextFieldtf;Stringstr=;Imagepic=null;publicvoidinit(){L1=newLabel(请输入图片名称,然后回车);tf=newTextField(8);tf.addActionListener(this);add(L1);add(tf);}publicvoidpaint(Graphicsg){pic=getImage(getCodeBase(),str);g.drawImage(pic,20,40,200,200,this);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==tf)str=tf.getText();repaint();}}//UseTextField.htmlHTMLHEADTITLEJava小程序/TITLE/HEADBODYAPPLETCODE=UseTextFieldWIDTH=500HEIGHT=400/APPLET/BODY/HTML运行结果见演示。6.4.4文本区用于创建多行文本。方法与文本框类似,具体见API文档。6.5Java应用程序的图形界面6.5.1容器和基本控制组件基本控制组件:容器组件:标签、按钮和文本组件等。其中窗体类包括框架类(Frame)、对话框类(Dialog)和文件对话框类(FileDialog)面板类(Panel)窗体类(window)一个组件需要添加到容器中才能看到,一个容器本身也可以添加到另一个容器中,实现容器的嵌套。6.5.2应用程序图形界面的实现应用程序(Application)要具有图形界面的窗口,需要继承自框架类,或先编写框架类的子类,并创建该类对象。1、创建窗口用java.awt包中的框架类或它的子类创建的一个对象就是一个窗口,它是一个容器,窗口中可以添加如标签、按钮、菜单等组件。publicFrame()–创建一个没有窗口名字的窗口PublicFrame(Stringtitle)–创建一个名字为title的窗口※窗口默认是不可见的,必须通过setVisible(booleanb)设置窗口可见。(逻辑值b为true时)。2.设置窗口的一些方法publicvoidsetSize(intwidth,intheight)-设置窗口宽width、高height,单位是像素。publicvoidsetVisible(booleanb)–设置窗口是否可见,默认为不可见。b为true时,窗口可见。publicvoidsetResizable(booleanb)–设置窗口是否可调整,默认大小可调整。b为false时,窗口大小不可调整。publicvoidsetTitle(Stringtitle)–设置窗口的标题名为titlepublicvoidsetBounds(intx,inty,intwidth,intheight)-设置窗口在屏幕上的显示位置及宽和高。publicvoidpack()-根据窗口中的布局和添加组件的大小以紧凑形式显示窗口。3.处理窗口关闭事件当一个窗口打开、关闭、最小化时都会引发窗口事件(WindowsEvent

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功