Java就业培训教程第九章 GUI(下)

上传人:大米 文档编号:565038093 上传时间:2024-02-21 格式:DOC 页数:29 大小:3.58MB
返回 下载 相关 举报
Java就业培训教程第九章 GUI(下)_第1页
第1页 / 共29页
Java就业培训教程第九章 GUI(下)_第2页
第2页 / 共29页
Java就业培训教程第九章 GUI(下)_第3页
第3页 / 共29页
Java就业培训教程第九章 GUI(下)_第4页
第4页 / 共29页
Java就业培训教程第九章 GUI(下)_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《Java就业培训教程第九章 GUI(下)》由会员分享,可在线阅读,更多相关《Java就业培训教程第九章 GUI(下)(29页珍藏版)》请在金锄头文库上搜索。

1、2022年-2023年建筑工程管理行业文档 齐鲁斌创作第9章 GUI(下)9.1 常用AWT组件在上一章开始的第一个程序中,我们就用到了按钮(Button),这是最简单的组件之一了,在AWT里还有很多用于GUI设计的组件,我们现在就来了解更多的GUI组件。如图9.1所示描述了AWT中的组件及类层次关系图。图9.19.1.1 Component类Java的图形用户界面的最基本组成部分是组件,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。抽象类Component是所有Java GUI组件的共同父类。Component类规定了所有GUI组件的基本特性,该

2、类中定义的方法实现了作为一个GUI组件所应具备的基本功能。Java程序要显示的GUI组件必须是抽象类Component或MenuComponent的子类。9.1.2 CanvasCanvas代表屏幕上的一块空白的矩形区域,程序能够在这个部件表面绘图,也能够捕获用户的操作,产生相应的事件,Canvas可以说是具有最基本的和最简单的GUI功能的部件。当我们要设计一种自己定制的具有GUI功能的部件类,我们的这个类就可以继承Canvas,这样,我们的部件类就已经完成了GUI的基本功能,我们只需要在这个基础上增加子类部件所专有的外观和功能的相关代码就行了,我们要想绘制子类部件的外观,我们必须覆盖Canv

3、as的paint方法。我们现在设计一个计时器部件,鼠标在部件上按下时,计时器开始计时,并在部件上显示计时时间,鼠标释放时,计时器停止计时。下面是这个计时器的程序代码,其中涉及到的技巧和知识点,都在前面有过讲解,这里就不作详细解释了。程序清单:TestStopWatch.javaimport java.awt.*;import java.awt.event.*;import java.util.*;import java.text.SimpleDateFormat;class StopWatchextends Canvas implements Runnableprivate long star

4、tTime = 0;private long endTime = 0;private boolean bStart = false;public StopWatch()enableEvents(AWTEvent.MOUSE_EVENT_MASK);setSize(80,30);protected void processMouseEvent(MouseEvent e)if(e.getID() = MouseEvent.MOUSE_PRESSED)bStart = true;startTime = endTime = System.currentTimeMillis();repaint();ne

5、w Thread(this).start();else if(e.getID() = MouseEvent.MOUSE_RELEASED)bStart = false;repaint();super.processMouseEvent(e);public void paint(Graphics g)SimpleDateFormat sdf= new SimpleDateFormat(HH:mm:ss); Date elapsedTime =null;tryelapsedTime= sdf.parse(00:00:00);catch(Exception e)elapsedTime.setTime

6、(endTime - startTime + elapsedTime.getTime();String display = 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);public void run()while(bStart)tryThread.sleep(500);catch(Exception e)e.printStackTrace();endTime = System.current

7、TimeMillis();repaint();public class TestStopWatchpublic static void main(String args)Frame f =new Frame(StopWatch);f.add(new StopWatch();f.setSize(200,200);f.setVisible(true);f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););编译并运行这个程序,你一定要用鼠标按住计时器部件几秒钟,你

8、就能看到我们期望的效果了,如图9.2所示。图9.2如果你想让这个计时器部件尽可能满足更多的应用需求,你还需要增加一些功能,如允许用户设置文本的颜色,文本的大小随部件大小的改变而改变等。9.1.3 Checkbox如果你熟悉Windows的应用,对单选按钮和多选按钮一定不会陌生,这两种按钮都有选中和不选两种状态,如图9.3所示。对多选按钮来说,如果有多个这样的按钮,每个按钮之间没有制约关系,可以同时选中其中的多个。而单选按钮则要求有一组按钮,这一组按钮中同时只能有一个为选中状态。Java里提供的这个Checkbox类来建立单选按钮和多选按钮,Checkbox的使用很容易,如果要创建多选按钮,我们

9、只要使用public Checkbox(Stringlabel, booleanstate)这个构造函数来创建Checkbox对象就行了,创建多选按钮要用到两个参数,前一个是选框旁边的说明文字,后一个参数决定选框是否默认被选定。因为创建单选按单钮需要一组按钮,所以在创建单选按钮时,我们还需要指定这个按钮所属于的组,使用public Checkbox(Stringlabel,booleanstate,CheckboxGroupgroup)这个构造函数创建的就是单选按钮。其中,CheckboxGroup类对象指定了这个单选按钮所属于的组。对一般的程序来说,需要处理单选按钮和多选按钮的ItemEve

10、nt事件,从而获得用户选择的结果。处理ItemEvent事件的监听器接口为ItemListener,其中只有一个itemStateChanged方法,显然,ItemEvent是一种语义事件。下面是一段创建多选按钮和单选按钮以及相关事件处理的程序代码:程序清单:TestCheckbox.javaimport java.awt.*;import java.awt.event.*;public class TestCheckbox Checkbox cb1=new Checkbox(你喜欢我吗?,true);CheckboxGroup cbg=new CheckboxGroup();Checkbox

11、 cb2=new Checkbox(喜欢,cbg,true);Checkbox cb3=new Checkbox(不喜欢,cbg,false);public void init()Frame f=new Frame(TestCheckBox);/创建FlowLayout布局管理器,关于布局管理器,本章后面有专门的讲解,看不明白/的读者暂时可以不去下面两句代码的作用。FlowLayout fl=new FlowLayout();f.setLayout(fl); f.add(cb1);f.add(cb2);f.add(cb3);cb1.addItemListener(new CbItemListe

12、ner();cb2.addItemListener(new CbItemListener();cb3.addItemListener(new CbItemListener();f.setBounds(0,0,300,100);f.setVisible(true);f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););class CbItemListener implements ItemListenerpublic void itemStateChanged

13、(ItemEvent e)Checkbox cb = (Checkbox)e.getItemSelectable();if(cb.getLabel().equals(你喜欢我吗?)if(cb.getState() = true)System.out.println(我很高兴);elseSystem.out.println(我很伤心);/*else if(cb.getLabel().equals(喜欢)if(e.getStateChange() = ItemEvent.SELECTED)System.out.println(我也喜欢你);elseSystem.out.println(我也不喜欢你

14、);*/elseCheckbox cbx =cbg.getSelectedCheckbox();if(cbx != null)System.out.println(cbx.getLabel();public static void main(String args)new TestCheckbox().init();程序运行效果如图9.3所示:图9.3如果我们用注释的程序代码来处理单选按钮,需要为每一个单选按钮都编写一段这样的代码,如果按钮的个数较多,程序就比较臃肿,但从这段注释代码中,读者可以了解到对同一问题的多种处理方式,也可以在正好有这方面的需要时参考。如果我们不想直接处理这些单选按钮的事件,而是在别的部件的事件处理代码中收集这些单选按钮

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号