欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java图形用户界面设计.ppt

    • 资源ID:6509684       资源大小:924.50KB        全文页数:141页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java图形用户界面设计.ppt

    第9章 图形用户界面(GUI)设计,9.1图形用户界面设计概述,9.1.1 GUI支持包和简单GUI程序例1.java.awt包 Java语言在java.awt包中提供了大量地进行GUI设计所使用的类和接口,包括绘制图形、设置字体和颜色、控制组件、处理事件等内容,AWT是Java语言进行GUI程序设计的基础。2.javax.swing包Swing包是Java基础类库(Java Foundation Classes,JFC)的一部分。Swing提供了从按钮到可分拆面板和表格的所有组件。,Swing组件是Java语言提供的第二代GUI设计工具包,它以AWT为基础,在AWT内容的基础上新增或改进了一些GUI组件,使得GUI程序功能更强大,设计更容易、更方便。Swing是开发新组件的项目代码名,现在,这个名字常用来引用新组件和相关的API。AWT组件和对应的Swing组件,从名称上很容易记忆和区别。例如,AWT的框架类、面板类、按钮类和菜单类,被命名为Frame、Panel、Button和Menu,而Swing对应的组件类被命名为JFrame、JPanel、JButton和JMenu。与AWT组件相比,Swing组件的名前多一个“J”字母。另外,AWT 组件在java.awt包中,而Swing组件在javax.swing包中。,3.一个Java GUI简单程序【例9.1】一个简单的Swing GUI应用程序。在一个框架窗口中显示两个标签和一个按钮:上面的标签显示一串固定的文字信息,选择按钮后在下面的标签上显示系统现在的时间。import java.awt.*;import.*;import javax.swing.*;import java.util.*;/继承JFrame类并实现ActionListener接口public class SwingDemo extends JFrame implements ActionListener JButton b1;/声明按钮对象 JLabel l1,l2;/声明标签对象,SwingDemo()/定义构造方法 super(Swing应用程序的例);/调用父类的构造方法 l1=new JLabel(一个GUI应用程序的例子,JLabel.CENTER);/定义标签,文字居中 l2=new JLabel();/定义无文字标签 b1=new JButton(现在时间T);/定义按钮 b1.setMnemonic(KeyEvent.VK_T);/设置按钮的快捷键 b1.setActionCommand(time);/设置控制名 b1.addActionListener(this);/注册按钮事件 add(l1,BorderLayout.NORTH);/添加标签l1 add(l2,BorderLayout.CENTER);/添加标签l2 add(b1,BorderLayout.SOUTH);/添加标签b1,/对按钮引发事件编程 public void actionPerformed(ActionEvent e)/捕获按钮事件 Calendar c1=Calendar.getInstance();/获取系统日期和事件 if(e.getActionCommand().equals(time)/判断是否为所需的按钮事件 l2.setText(“现在时间是”+c1.get(Calendar.HOUR_OF_DAY)+“时”+c1.get(Calendar.MINUTE)+“分”);/设置标签文字 l2.setHorizontalAlignment(JLabel.CENTER);/设置标签标签文字居中对齐,else System.exit(0);public static void main(String args)/主方法 JFrame.setDefaultLookAndFeelDecorated(true);/加此语句显示为运行结果图的右图 JFrame frame=new SwingDemo();/创建JFrame对象,初始不可见 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置框架关闭按钮事件 frame.pack();/压缩框架的显示区域 frame.setVisible(true);/显示框架主窗口,程序运行后显示的形式如下图。Java Swing GUI应用程序中的基本代码如下。(1)引入合适的包和类一般的Swing GUI应用程序应包含程序中的前三个引入语句,它们分别表示引入awt包、awt事件处理包和swing包。其他包按需引入。,由于Swing组件使用AWT的结构,包括AWT的事件驱动模式,所以,使用swing组件的程序一般需要使用awt包。(2)使用缺省的观感或设置自己的观感(Look and Feel)(3)设置一个顶层的容器(4)根据需要,使用缺省的布局管理器或设置另外的布局管理器(5)定义组件并将它们添加到容器(6)对组件或事件编码,9.1.2 容器、组件、布局和观感1.容器(Container)和组件(Component)一个Java的图形用户界面的最基本元素是组件,组件是可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,如一个按钮、一个文本框等。在Java语言中,通常将组件放在一定的容器内使用。容器实际上是一种具有容纳其他组件和容器的功能的组件。抽象类Container是所有容器的父类,其中包含了很多有关容器的功能和方法。而类Container又是Java语言的组件类Component的子类。,2.布局管理器(Layout Manager)为了使得图形用户界面具有良好的平台无关性,在Java语言中提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。容器中的组件定位由布局管理器决定。每个容器都有一个缺省的布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其相应的布局管理器。但也可以不用缺省的布局管理器,在程序中指定其新的布局管理器。Java平台提供多种布局管理器,常用的有FlowLayout、BorderLayout、GridLayout、CardLayout、BoxLayout和GridBagLayout等。使用不同的布局管理器,组件在容器上的位置和大小都是很不一样的。,在程序中安排组件的位置和大小时,应该注意:(1)容器中的布局管理器负责各个组件的大小和位置。因此用户无法在这种情况下直接设置这些属性。若试图使用Java语言提供的setLocation()、setSize()、setBounds()等方法,则都会被布局管理器覆盖。(2)若用户确实需要亲自设置组件的位置和大小,则应取消该容器的布局管理器,方法为:setLayout(null);随后,用户必须使用setLocation()、setSize()、setBounds()等方法为组件设置大小和位置,但这种方法将会导致程序的系统相关。在一个GUI应用程序的界面上,除了可以见到上述的标准GUI元素外,还可以见到一些非交互的起到装饰、美化界面的作用的几何图形、图案、图像等内容。,3.观感(Look and Feel)Java swing的一个重要特征是它的可插入的“观感”体系。一个Swing应用程序或一个最终用户可指明所需要的观感,使得Swing应用程序的外观和行为都可以被定制。Swing运行一个缺省的Java观感(也称为Metal观感),还实现了模仿Motif和Windows的观感。这样,一个Swing程序可拥有Java程序的独特外观,也可以拥有熟悉的Windows操作系统外观。在本章稍后部分的单选按钮的程序例中分别显示了Windows、Motif和Metal三种不同风格的观感。一般在应用程序的JFrame的构造方法中或在JApplet的init()方法中进行观感的设置。【例9.2】设置观感。import javax.swing.*;import java.awt.*;,public class SetLAF public static void setNativeLookAndFeel()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)(设置native LAF错误:+e);public static void setJavaLookAndFeel()try UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();catch(Exception e)(设置Java LAF错误:+e);,public static void setMotifLookAndFeel()try UIManager.setLookAndFeel(“.motif.MotifLookAndFeel);catch(Exception e)(设置Motif LAF错误:+e);因为setLookAndFeel()方法抛出异常,因此设置观感的代码应捕捉异常。本例创建的类SetLAF可在以后的程序中设置观感时使用。,9.1.3事件处理在一个GUI程序中,为了能够接收用户的输入、命令的按键和鼠标操作,程序系统首先应该能够识别这些操作并做出相应的响应。通常一个键盘和鼠标操作将引发一个系统预先定义好的事件,用户程序只要编写代码定义每个事件发生时程序应做出何种响应即可。这些代码会在它们对应的事件发生时由系统自动调用,这就是GUI程序中事件和事件响应的基本原理。在Java语言中,除了键盘和鼠标操作,系统的状态改变也可以引发事件。,可能产生事件的组件称为事件源,不同事件源上发生的事件种类是不同的。若希望事件源上引发的事件被程序处理,需要将事件源注册给能够处理该事件源上那种事件类型的监听器。监听器具有监听和处理某类事件的功能,它可以是包容事件源的容器,也可以是另外的对象。也就是说,事件源和事件处理是分开的,一般组件都不处理自己的事件,而将事件处理委托给外部的处理实体,这种事件处理模型称为授权处理模型。事件的行为多种多样,由不同的监听器处理。编写事件处理程序首先应确定关注的事件属于何种监听器类型。,在AWT中,提供11种标准的监听器类型,见下表。监听器 适配器类 注册方法 ActionListener addActionListenerAdjustmentListener addAdjustmentListenerComponentListener ComponentAdapter addComponentListenerContainerListener ContainerAdapter addContainerListenerFocusListener FocusAdapter addFocusListenerItemListener addItemListenerKeyListener KeyAdapter addKeyListenerMouseListener MouseAdapter addMouseListenerMouseMotionListener MouseMotionAdapter addMouseMotionListenerTextListener addTextListenerWindowListener WindowAdapter addWindowListener,在确定监听器类型后,要用事件源类的注册方法来注册一个监听器类的对象。这样,事件源产生的事件会传送给已注册的处理该类事件的监听器对象,该对象将自动调用相应的事件处理方法来处理该事件。具体的注册方法是:用监听器类的对象作为参数调用事件源本身的addXxxListener()方法。该方法的参数是一个监听器类的对象,有多种形式。例如:(1)分离的监听器类,该类通常为继承相应事件适配器类的子类,类中包含了事件处理方法。参数是该类的一个对象。(2)实现监听器接口,参数为this,表示本对象就是一个监听器类的对象。在本类中包含事件处理方法。(3)有名内部类,参数形式为继承事件适配器类的子类对象,在子类中包含事件处理方法。(4)匿名内部类,参数形式为用new开始的一个无名的类定义。其中包含事件处理方法。,9.2布局管理器,在容器中所有组件的布局(位置和大小)由布局管理器来控制。在Java语言中提供了FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout等多种布局管理器。每种容器都有自己缺省的布局管理器。缺省地,JPanel使用FlowLayout,而内容窗格 ContentPane(JApplet、JDialog和JFrame对象的主容器)使用BorderLayout。如果不希望使用缺省的布局管理器,则可使用所有容器的父类Container的setLayout()方法来改变缺省的布局管理器。,1.FlowLayoutFlowLayout布局是一种最基本的布局。这种布局指的是把组件一个接一个从左至右、从上至下地依次放在容器上,每一行中的组件缺省为居中对齐。当容器的尺寸改变后,组件的大小不变,但布局将会随之变化。FlowLayout是Applet和JPanel的缺省布局管理器。FlowLayout类的构造方法如下:FlowLayout()创建每行组件对齐方式为居中对齐、组件间距为5个像素单位的对象FlowLayout(int align)创建指定每行组件对齐方式、组件间距为5个像素单位的对象,align可取三个静态常量LEFT、CENTER和RIGHT之一(分别表示左、中、右对齐方式)。,FlowLayout(int align,int hgap,int vgap)创建指定每行组件对齐方式的对象,该对象也使用参数vgap和hgap指定了组件间的以像素为单位的纵横间距。向使用FlowLayout布局的容器添加组件可简单地使用下面的语句:add(组件名);2BorderLayoutBorderLayout 是内容窗格的缺省布局管理器。内容窗格是框架JFrame,小程序JApplet和对话框JDialog的主容器。BorderLayout将容器的布局分为五个区:北区、南区、东区、西区和中区。这几个区的分布规律是“上北下南,左西右东”。当容器的大小改变时,容器中的各个组件相对位置不变,其中间部分组件的尺寸会发生变化,四周组件宽度固定不变。,BorderLayout类的构造方法如下:BorderLayout()创建组件间无间距的BorderLayout对象。BorderLayout(int hgap,int vgap)创建有指定组件间距的对象。向BorderLayout布局的容器添加组件时,每添加一个组件都应指明该组件加在哪个区域中。add()方法的第二个参数指明加入的区域,区域东南西北中可用五个静态常量表示:BorderLayout.EAST、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.NORTH和BorderLayout.CENTER。,【例9.3】将五个按钮加入BorderLayout的五个区。import java.awt.*;import javax.swing.*;public class BorderLayoutDemo extends JApplet public void init()Container c=getContentPane();c.add(new Button(北North),BorderLayout.NORTH);c.add(new Button(南South),BorderLayout.SOUTH);c.add(new Button(东East),BorderLayout.EAST);c.add(new Button(西West),BorderLayout.WEST);c.add(new Button(中Center),BorderLayout.CENTER);程序运行的结果见下图。,3GridLayoutGridLayout布局是将容器的空间分成若干行和列的一个个网格,可以给出网格的行数和列数,组件添加到这些网格中。当改变容器的大小后,其中的组件相对位置不变,但大小改变。容器中各个组件同高度、同宽度。各个组件缺省的排列方式为:从上到下,从左到右。,GridLayout类的构造方法如下:public GridLayout()创建单行每个组件一列的GridLayout对象。public GridLayout(int rows,int cols)创建指定行列数的GridLayout对象。public GridLayout(int rows,int cols,int hgap,int vgap)创建指定行列数的GridLayout对象。因为没有容器缺省使用GridLayout,因此在使用GridLayout前,要用setLayout()方法将容器的布局管理器设置为GridLayout。在向GridLayout添加组件时,组件加入容器要按序进行,每个网格中都必须加入组件,若希望某个网格为空,可以为该网格加入一个空的标签:add(new JLabel()。,【例9.4】GridLayout布局。import java.awt.*;import javax.swing.*;public class GridLayoutDemo extends JApplet public void init()Container c=getContentPane();c.setLayout(new GridLayout(3,2);c.add(new Button(1);c.add(new Button(2);c.add(new Button(3);c.add(new Button(4);c.add(new Button(5);c.add(new Button(6);,4.CardLayoutCardLayout布局管理器能够使得多个组件共享同一显示空间,这些组件之间的关系像一叠重叠的扑克牌,只有最上面的组件是可见的。注意:在一个显示空间(卡片)中只能显示一个组件,因此,可使用容器嵌套的方法来显示多个组件。,例9.4运行的结果如下图所示。,CardLayout类的构造方法如下:CardLayout()创建间距为零的对象。CardLayout(int hgap,int vgap)创建带有水平hgap和垂直vgap间距的对象。为了使用叠在下面的组件,可以为每个组件取一名字,名字在用add()方法向容器添加组件时指定,需要某个组件时通过show()方法指定该组件的名字来选取它。也可以顺序使用这些组件,或直接指明选取第一个组件(用first()方法)或最后一个组件(用last()方法)。,【例9.5】CardLayout布局。import java.awt.*;import javax.swing.*;public class CardLayoutDemo extends JApplet CardLayout cl=new CardLayout(20,40);/组件在卡片中有边界 JButton b1=new JButton(卡片一);JButton b2=new JButton(卡片二);JButton b3=new JButton(卡片三);public void init()getContentPane().setLayout(cl);getContentPane().add(card1,b1);getContentPane().add(card2,b2);getContentPane().add(card3,b3);,程序运行结果如下图所示。程序中的三个按钮组件顺序添加到卡片布局管理器的各个卡片上,它们共享同一显示区域,因此只能见到最上面的“卡片一”按钮。,5.GridBagLayoutGridBagLayout是最复杂也最灵活的布局管理器。这个布局管理器将组件放入单元格中,但允许一些组件跨越单元格。可用GridBagLayout类的构造方法GridBagLayout()来创建一个GridBagLayout布局管理器。因GridBagLayout布局设置比较复杂,这里就不介绍了,请读者参看API说明或其他资料。6.自定义布局,若希望按照自己的要求来进行组件和界面图形元素的布局,可用容器的setLayout(null)方法将容器的布局管理器设置为空,然后用下面的方法设置组件在容器中的位置和大小:setBounds(int a,int b,int width,int height)其中,参数a和b指定矩形形状的组件左上角在容器中的坐标,width和height指定组件的宽和高。【例9.6】设置自己的布局管理器。import java.awt.*;import javax.swing.*;class NullLayout extends JFrame NullLayout()super(建设自己的布局管理器);Container c=getContentPane();/也可不用内容窗格 c.setLayout(null);,JButton jb1=new JButton(按钮1);JButton jb2=new JButton(按钮2);c.add(jb1);c.add(jb2);jb1.setBounds(10,10,100,30);jb2.setBounds(10,50,100,30);public static void main(String args)NullLayout nl=new NullLayout();nl.setSize(200,150);nl.setVisible(true);程序的运行结果如下图所示。注意,采用这种方式的布局,组件的位置和大小将不随窗口大小的变化而变化。,下图为例9.6的运行界面。,9.3常用Swing组件,9.3.1 容器组件1.JFrame框架框架,是JFrame类的对象,是swing GUI应用程序的主窗口。窗口有边界、标题、关闭按钮等。对Java应用程序,应至少包含一个框架,例9.1的应用程序即使用了框架。有时,小程序也使用框架。JFrame类继承于Frame类。JFrame类的构造方法如下:JFrame()创建无标题的初始不可见框架。JFrame(String title)创建标题为title的初始不可见框架。,例如,创建带标题“Java GUI应用程序”的框架对象frame,可用语句:JFrame frame=new JFrame(Java GUI应用程序);要显示框架对象代表的框架窗口,可使用方法setVisible()。可用语句:frame.setVisible(true);可使得JFrame类对象frame表示的框架窗口显示到屏幕上。一般在显示框架前,可设置框架的初始显示大小可使用setSize()方法或pack()方法。例如:frame.setSize(200,150);/设置框架窗口初始大小为200150点 frame.pack();/设置框架窗口初始大小为刚好只显示出所有的组件。,在向框架添加组件时,并不直接添加组件到框架,而是添加到内容窗格(content pane),改变其他特性(布局管理器、背景色等)也对内容窗格进行。要存取内容窗格,可通过getContentPane()方法,若希望用自己的容器替换掉内容窗格(例如用JPanel),可以使用setContentPane()方法。选择框架的关闭按钮后,框架窗口将自动关闭,但若是应用单个框架的应用程序,为了在选择框架的关闭按钮时能退出程序,应添加WindowListener监听器或书写下列代码:frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,JFrame的缺省观感为Java(Metal),若要使用其他的观感,必须显式设置。JFrame(应该说是内容窗格)的缺省布局管理器是BorderLayout。2.JPanel面板JPanel是一种添加到其他容器使用的容器组件,可将组件添加到JPanel,然后再将JPanel添加到某个容器。JPanel也提供一个绘画区域,可代替AWT的画布Canvas(没有JCanvas)。,类继承于类,其构造方法有:public JPanel()创建具有缺省FlowLayout布局的JPanel对象。public JPanel(LayoutManager layout)创建具有指定布局管理器的JPanel对象。将JPanel作为画布的绘画区域使用时,要使用下面的两个步骤:首先,设置画布绘图区域的大小;其次,使用paintComponent()方法(不是paint()方法)来绘图,在该方法体中,首先调用方法super.paintComponent()来清除显示区域。,例如:public void paintComponent(Graphics g)super.paintComponent(g);.JPanel可指定边界,可用的边界有titled、etched、beveled、line、matte、compound和empty等,也可以创建自己的边界。可用JComponent类的setBorder()方法设置边界。其用法如下:public void setBorder(Border border)其中,Border类的参数可用类中的方法获得。获取各种相应边界的方法为:createTitledBorder()createEtchedBorder()createBevelBorder()createRaisedBevelBorder(),createLoweredBevelBorder()createLineBorder()createMatteBorder()createCompoundBorder()createEmptyBorder()【例9.7】使用JPanel。import java.awt.*;import javax.swing.*;class JPanelDemo extends JPanel JButton b1=new JButton(JPanel);JButton b2=new JButton(Demo);public JPanelDemo()setBackground(Color.white);add(b1);add(b2);,public static void main(String args)JPanel jp=new JPanelDemo();jp.setBorder(BorderFactory.createTitledBorder(Hello,Border);JFrame frame=new JFrame(JPanelDemo);frame.setSize(200,150);frame.setContentPane(jp);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);,例9.7程序运行结果如下图所示。,3.JApplet类是类的子类。使用Swing组件的小程序需继承JApplet类。除了所处的java包不同外,JApplet与Applet的主要区别还有:(1)缺省的布局管理器不同 Applet缺省的布局管理器是FlowLayout,而JApplet(内容窗格)缺省的布局管理器是BorderLayout。,(2)加入组件的方式不同Applet可直接加入组件,而JApplet缺省使用内容窗格ContentPane作为主容器。加入Swing组件时,要先使用JApplet的方法getContentPane()获得一个Container对象,再调用这个对象的add()方法将Swing组件加入到JApplet的容器中。4.JTabbedPanejavax.类继承于,它的对象反映为一组带标签的面板,每个面板都可以存放组件,因此JTabbedPane是一容器组件。,JTabbedPane类的构造方法有:JTabbedPane()创建空对象,该对象具有缺省的标签位置JTabbedPane.TOP和缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUT。JTabbedPane(int tabPlacement)创建空对象,该对象具有指定的标签位置:JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT或JTabbedPane.RIGHT以及缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUT。JTabbedPane(int tabPlacement,int tabLayoutPolicy)创建空对象,该对象具有指定的标签位置和布局策略。,【例9.8】使用JTabbedPane容器。import java.awt.*;import.*;import javax.swing.*;import.*;public class JTabbedPaneDemo public static void main(String args)new MyTabbedPane();class MyTabbedPane extends JFrame implements ChangeListener,ActionListener JTabbedPane jt;JButton jb;int index=0;,MyTabbedPane()super(使用标签面板容器);jt=new JTabbedPane();jb=new JButton5;for(int i=0;i5;i+)jbi=new JButton(第+i+页面板);jbi.addActionListener(this);jt.addTab(页标签+i,jbi);jt.addChangeListener(this);getContentPane().add(jt,BorderLayout.CENTER);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,200);setVisible(true);,public void stateChanged(ChangeEvent e)if(e.getSource()=jt)int i=(JTabbedPane)e.getSource().getSelectedIndex();jbindex.setVisible(false);jbi.setVisible(true);index=i;public void actionPerformed(ActionEvent e)setTitle(“响应单击”+(JButton)e.getSource().getText();,例9.8运行结果如下图所示。,9.3.2 按钮(JButton)按钮是GUI中非常重要的一种基本组件。按钮一般对应一个事先定义好的事件、执行功能、一段程序。当使用者单击按钮时,系统自动执行与该按钮联系的程序,从而完成预定的功能。JButton类提供对按钮的支持,它的类层次关系如下:,JButton类有如下的构造方法:JButton()创建空按钮。JButton(Icon icon)创建带图标的按钮。JButton(String text)创建带文字的按钮。JButton(String text,Icon icon)创建带文字和图标的按钮。JButton组件与AWT的Button组件相比,增加了显示文本中可用HTML标记,可带图标等功能。在JButton按钮的使用中,常用到继承来的setMnemonic()(设置快捷字母键)、setActionCommand()(设置动作命令)方法等。JButton组件引发的事件为ActionEvent,可实现ActionListener监听器接口的actionPerformed()方法,用addActionListener()方法注册,用getActionCommand()或getSource()方法确定事件源。,【例9.9】设计一个GUI应用程序,有两个标签l1、l2和三个按钮b1,b2,b3。l1标签显示固定的文字,l2标签的文字随选择不同的按钮而变化;选择b1按钮时,l2标签显示为“欢迎进入Java世界”,选择b2按钮时,l2标签显示当前的日期,选择b3按钮时,退出该应用程序。程序如下:import java.awt.*;import.*;import javax.swing.*;import java.util.*;public class JButtonDemo extends Jpanel implements ActionListener JButton b1,b2,b3;static JLabel l1,l2;JButtonDemo(),l1=new JLabel(这是一个演示按钮动作的程序,JLabel.CENTER);l2=new JLabel(,JLabel.CENTER);b1=new JButton(欢迎w);b1.setMnemonic(KeyEvent.VK_W);/设置按钮的快捷键 b1.setActionCommand(welcome);b2=new JButton(日期d);b2.setMnemonic(KeyEvent.VK_D);/设置快捷字符为D b2.setActionCommand(date);b3=new JButton(退出q);b3.setMnemonic(KeyEvent.VK_Q);/设置快捷字符为Q b3.setActionCommand(quit);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);,add(b1);add(b2);add(b3);public void actionPerformed(ActionEvent e)Calendar c1=Calendar.getInstance();if(e.getActionCommand().equals(welcome)l2.setText(欢迎进入Java世界。);else if(e.getActionCommand().equals(date)l2.setText(今天是+c1.get(Calendar.YEAR)+年+(c1.get(Calendar.MONTH)+1)+月+c1.get(Calendar.DATE)+日);else System.exit(0);l2.setHorizontalAlignment(JLabel.CENTER);/标签文字水平居中,public static void main(String args)JFrame frame=new JFrame(使用JButton);frame.getContentPane().add(new JButtonDemo(),BorderLayout.SOUTH);frame.getContentPane().add(l1,BorderLayout.NORTH);frame.getContentPane().add(l2,BorderLayout.CENTER);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setVisible(true);本程序中命令按钮设置了快捷字母键,可用鼠标单击或按Alt+快捷字母来选择按钮。,例9.9运行启动后选择“欢

    注意事项

    本文(Java图形用户界面设计.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开