博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java知多少(82)标签、按钮和按钮事件简介
阅读量:5794 次
发布时间:2019-06-18

本文共 3806 字,大约阅读时间需要 12 分钟。

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

标签

标签(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. 为需要控制的按钮对象注册监视器,对在这个按钮上产生的事件实施监听。如果是按钮对象所在的类实现监视接口,注册监视器的代码形式是
    1     addActionListener(this);

     

    参见【例 11-3】,如果是别的类A的对象a作为监视器,类A必须实现ActionListener接口,完成监视器注册需用以下形式的两行代码:
    1     A a = new A();  //创建类A的实例a2     addActionListener(a);  //用对象a作为监视器对事件进行监视。

     

  6. 在实现接口ActionListener的类中,给出处理事件的方法的定义:
    1     public void actionPerformed(ActionEvent e);

     

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

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

2 import javax.swing.*;import java.awt.*;import java.awt.event.*; 3 public class J503{ 4     public static void main(String[]args){ 5         ButtonDemo myButtonGUI=new ButtonDemo();//声明并创建按钮对象 6         myButtonGUI.setVisible(true); 7     } 8 } 9 class ButtonDemo extends JFrame implements ActionListener{10     public static final int Width=250;11     public static final int Height=200;12     ButtonDemo(){13         setSize(Width,Height); setTitle("按钮事件样例");14         Container conPane=getContentPane();15         conPane.setBackground(Color.BLUE);16         conPane.setLayout(new FlowLayout());//采用FlowLayout布局17         JButton redBut=new JButton("Red");18         redBut.addActionListener(this);//给Red按钮注册监视器19         conPane.add(redBut);//在窗口添加Red按钮20         JButton greenBut=new JButton("Green");21         greenBut.addActionListener(this);//给Green按钮注册监视器22         conPane.add(greenBut);//在窗口添加Green按钮23     }24     public void actionPerformed(ActionEvent e){
//实现接口处理事件的方法25 Container conPane=getContentPane();26 if(e.getActionCommand().equals("Red"))//是Red按钮事件27 conPane.setBackground(Color.RED);28 else if(e.getActionCommand().equals("Green"))//是Green按钮事件29 conPane.setBackground(Color.GREEN);30 else{}31 }32 }

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

在上面的程序中,代码
    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()就能获取action事件参数e的命令字符串,据此,方法actionPerformed()就能知道是哪一个按钮激发的事件。在默认情况下,按钮的命令字符串就是按钮上的文字。如有必要可以用方法 setActionCommand()为界面组件设置命令字符串。

系列文章:

转载于:https://www.cnblogs.com/Coda/p/4552923.html

你可能感兴趣的文章
chrome浏览器开发者工具之同步修改至本地
查看>>
debian7 + wheezy + chromium + flashplayer
查看>>
AOP
查看>>
进阶开发——文档,缓存,ip限速
查看>>
vue中子组件需调用父组件通过异步获取的数据
查看>>
uva 11468 - Substring(AC自己主动机+概率)
查看>>
Mysql 数据备份与恢复,用户创建,授权
查看>>
Angular.js中的$injector服务
查看>>
构建之法读书笔记01
查看>>
linux - lsof 命令最佳实践
查看>>
kafka性能测试
查看>>
现实世界的Windows Azure:h.e.t软件使用Windows Azure削减50%的成本
查看>>
深入.net框架
查看>>
聚合类新闻client产品功能点详情分析
查看>>
js设置定时器
查看>>
数据库除运算
查看>>
LeetCode--112--路径总和
查看>>
DeviceIOControl与驱动层 - 缓冲区模式
查看>>
感悟贴2016-05-13
查看>>
vim使用教程
查看>>