十. 图形界面(GUI)设计3.标签、按钮和按钮事件

标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关。

标签

标签(JLabel)是最简单的Swing组件。标签对象的作用是对位于其后的界面组件作说明。可以设置标签的属性,即前景色,背景色、字体等,但不能动态地编辑标签中的文本。

程序关于标签的基本内容有以下几个方面:

  1. 声明一个标签名;
  2. 创建一个标签对象;
  3. 将标签对象加入到某个容器。

JLabel类的主要构造方法是:

  1. JLabel ():构造一个无显示文字的标签;
  2. JLabel (String s):构造一个显示文字为s的标签;
  3. JLabel(String s, int align):构造一个显示文字为s的标签。align为显示文字的水平方式,对齐方式有三种:
    • 左对齐:JLabel.LEFT
    • 中心对齐:JLabel.CENTER
    • 右对齐:JLabel.RIGHT

JLabel类的其他常用方法是:

  1. setText(String s):设置标签显示文字;
  2. getText():获取标签显示文字;
  3. setBackground(Color c):设置标签的背景颜色,默认背景颜色是容器的背景颜色;
  4. setForeground(Color c):设置标签上的文字的颜色,默认颜色是黑色。

按钮

按钮(JButton)在界面设计中用于激发动作事件。按钮可显示文本,当按钮被激活时,能激发动作事件。

JButton常用构造方法有:

  1. JButton():创建一个没有标题的按钮对象;
  2. JButton(String s):创建一个标题为s的按钮对象。

JButton类的其他常用方法有:

  1. setLabel(String s):设置按钮的标题文字。
  2. getLabel():获取按钮的标题文字。
  3. setMnemonic(char mnemonic):设置热键
  4. setToolTipText(String s):设置提示文字。
  5. setEnabled(boolean b):设置是否响应事件
  6. setRolloverEnabled(boolean b):设置是否可滚动。
  7. addActionListener(ActionListener aL):向按钮添加动作监视器。
  8. removeActionListener(ActionListener aL):移动按钮的监视器。

按钮处理动作事件的基本内容有以下几个方面:

  1. 与按钮动作事件相关的接口是ActionListener,给出实现该接口的类的定义;
  2. 声明一个按钮名;
  3. 创建一个按钮对象;
  4. 将按钮对象加入到某个容器;
  5. 为需要控制的按钮对象注册监视器,对在这个按钮上产生的事件实施监听。如果是按钮对象所在的类实现监视接口,注册监视器的代码形式是
        addActionListener(this);
    参见【例 11-3】,如果是别的类A的对象a作为监视器,类A必须实现ActionListener接口,完成监视器注册需用以下形式的两行代码:
        A a = new A();  //创建类A的实例a
        addActionListener(a);  //用对象a作为监视器对事件进行监视。
  6. 在实现接口ActionListener的类中,给出处理事件的方法的定义:
        public void actionPerformed(ActionEvent e);

在处理事件的方法中,用获取事件源信息的方法获得事件源信息,并判断和完成相应处理。获得事件源的方法有:方法 getSource()获得事件源对象;方法getActionCommand()获得事件源按钮的文字信息。

【例 11-3】处理按钮事件实例,应用程序定义了一个窗口,窗口内设置两个按钮,当点击Red按钮时,窗口的背景色置成红色;点击Green按钮时,窗口的背景色置成绿色(查看源代码)。

用鼠标点击按钮产生事件对象,将事件送达对象,这个过程称为激发事件。当一个事件被送到监视器对象时,监视器对象实现的接口方法被调用,调用时系统会提供事件对象的参数。程序中虽然没有调用监视器方法的的代码,但是程序做了两件事:第一,指定哪一个对象是监视器,它将响应由按钮的激发的事件,这个步骤称为监视器注册。第二,必须定义一个方法,当事件送到监视器时,这个方法将被调用。程序中没有调用这个方法的代码,这个调用是系统执行的。

在上面的程序中,代码
    redBut.addActionListener(this);
注册this作为redBut按钮的监视器,随后的代码也注册this作为greenBut按钮的监视器。在上述的程序中,this就是当前的ButtonDemo对象myButtonGUI。这样,ButtonDemo类就是监视器对象的类,对象MyButtonGUI作为两个按钮的监视器。在类ButtonDemo中有监视器方法的实现。当一个按钮被点击时,系统以事件的激发者为参数,自动调用方法actionPerformed ()。

组件不同,激发的事件种类也不同,监视器类的种类也不同。按钮激发的事件称为action事件,相应的监视器称为action监视器。一个action监视器对象的类型为ActionListener,类要实现ActionListener接口。程序体现这些内容需要做到两点:

  1. 在类定义的首行接上代码implements ActionListener;
  2. 类内定义方法actionPerformed ()。

前面程序中的类ButtonDemo正确地做到了这两点。

每个界面元素当激发事件时,都有一个字符串与这个事件相对应,这个字符串称为action命令。用代码 e.getActionCommand www.qicaiyulept.cn ()就能获取action事件参数e的命令字符串,据此,方法actionPerformed()就能知道是哪一个按钮激发的事件。在默认情况下,按钮的命令字符串就是按钮上的文字。如有必要可以用方法 setActionCommand()为界面组件设置命令字符串。

时间: 2024-10-15 03:12:01

十. 图形界面(GUI)设计3.标签、按钮和按钮事件的相关文章

十. 图形界面(GUI)设计1.图形界面设计基础

早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠标选择菜单中的选项和点击按钮,命令程序功能模块.本章学习如何用Java语言编写GUI科学试验,如何通过GUI实现输入和输出. AWT和Swing 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT

十. 图形界面(GUI)设计2.框架窗口

窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这个窗口,当应用程序程序启动时,由系统创建和处理: 框架窗口(JFrame):这是通常意义上的窗口,它支持窗口周边的框架.标题栏,以及最小化.最大化和关闭按钮: 一种无边框窗口(JWindow):没有标题栏,没有框架,只是一个空的矩形. 用Swing中的JFrame类或它的子类创建的对象就是JFram

十. 图形界面(GUI)设计7.文本框和文本区的输入输出

在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对于采用文本框作为输入的情况,最后输入的回车符可以激发输入完成事件,通常不用另设按钮.事件处理程序可以利用单词分析器分析出一个个数,再利用字符串转换数值方法,获得输入的数值.对于输出,程序先将数值转换成字符串,然后通过setText()方法将数据输出到文本框或文本区. [例 11-9]小应用程序设置一

十. 图形界面(GUI)设计5.布局设计

在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout,依次放置组件. BoarderLayout,将组件放置在边界上. CardLayout,将组件像扑克牌一样叠放,而每次只能显示其中一个组件. GridLayout,将显示区域按行.列划分成一个个相等的格子,组件依次放入这些格子中. GridBagLayout,将显示区域划分成许多矩形小单元,每个组件

十. 图形界面(GUI)设计4.面板

面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane). JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘画,将放有组件和有画的JPanel再放入另一个容器里.JPanel的默认布局为FlowLayout. 面板处理程序的基本内容有以下几个方面: 通过继承声明JPanel类的子类,子类中有一些组件,并在构造方法中将组件加入面板. 声明JPanel子类对象. 创建JPanel子类对象. 将JPanel子类

十. 图形界面(GUI)设计13.鼠标事件

鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionListener接口. MouseListener接口 MouseListener接口能处理5种鼠标事件:按下鼠标,释放鼠标,点击鼠标.鼠标进入.鼠标退出.相应的方法有:(1) getX():鼠标的X坐标(2) getY():鼠标的Y坐标(3) getModifiers():获取鼠标的左键或右键.(4

十. 图形界面(GUI)设计14.键盘事件

键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener(监视器).实现KeyListener接口有3个: keyPressed(KeyEvent e):键盘上某个键被按下: keyReleased(KeyEvent e):键盘上某个键被按下,又释放: keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合

【Python】 用户图形界面GUI wxpython II

wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布局 之前介绍的所有组件,如果不把它们的pos写死的话,页面上它们会互相重叠,导致没法看.而Sizer就是一个很好的优化布局的工具,通过此可以灵活地管理组件之间的相对位置. Sizer大概的可以被分成GridSizer(网格布局)和BoxSizer(线性布局).Sizer的用法概括起来就是创建Size

【Python】 用户图形界面GUI wxpython III

wxpython - 更多组件 我写到的这些组件可能一来不是很详细,二来不是最全的,想要更好地用这些组件,应该还是去看看教程和别的示例.比较简单的,推荐http://download.csdn.net/album/detail/459 辛星wpython教程 ■ 复选框 CheckBox 复选框需要对每个单独的选项构建,常用的构造方法是:CheckBox(parent,id,label,pos,size) 事件中的EVT_CHECKBOX是指被Bind的checkbox被勾选或取消时发生的事件