Java Swing组件单选框JRadioButton用法示例

本文实例讲述了Java Swing组件单选框JRadioButton用法。分享给大家供大家参考,具体如下:

JRadioButton是Swing中的单选框。所谓单选框是指,在同一个组内虽然有多个单选框存在,然而同一时刻只能有一个单选框处于选中状态。它就像收音机的按钮,按下一个时此前被按下的会自动弹起,故因此得名。因此,在添加JRadioButton控件时,要记得将它们添加到同一个ButtonGroup中。

JRadioButton的常用方法如下图所示:

可以为它添加ActionListener对象来响应事件。这里有一个问题,当多个JRadioButton共用一个事件监听器时,如何获取产生事件的按钮?

有4种方法:

1.遍历这些按钮并检查是否选中,这种方法比较笨重。

2.使用事件的getActionCommand()方法,这需要事先为每个控件设置ActionCommand。

3.使用事件的getSource,并转化为控件对象。

4.使用ButtonGroup的getSelection方法,它返回的并不是控件,而是那个控件的ButtonModel,需再次调用ButtonModel的getActionCommand方法。

使用demo如下:

JRadioButtonDemo.java

package awtDemo;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
/*
 * source code from 《java核心技术 卷1 基础知识》 P329
 */
@SuppressWarnings("serial")
public class JRadioButtonDemo extends JFrame {
  int DEFAULT_WIDTH = 600;
  int DEFAULT_HEIGHT = 400;
  private JLabel label;
  private JPanel buttonPanel;
  private ButtonGroup group;
  private static final int DEFAULT_SIZE = 12;
  private Map actionCommandSizeMap = new HashMap();
  // 二维数组存储按钮属性,第一维是按钮名称,第二维是字体大小
  private String[][] buttonAttributes = {
      { "Small", "Medium", "Large", "Extra" }, { "8", "12", "18", "36" } };
  public JRadioButtonDemo() {
    setTitle("JRadioButtonDemo - www.jb51.net");
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    // 添加label
    label = new JLabel("欢迎访问我们 www.jb51.net");
    label.setFont(new Font("Serif", Font.PLAIN, DEFAULT_SIZE));
    add(label, BorderLayout.CENTER);
    // 添加buttonPanel,它包含4个radioButton
    buttonPanel = new JPanel();
    group = new ButtonGroup();
    add(buttonPanel, BorderLayout.SOUTH);
    // 添加radioButton
    for (int i = 0; i < buttonAttributes[0].length; i++) {
      addRadioButton(buttonAttributes[0][i],
          Integer.parseInt(buttonAttributes[1][i]));
      // 将按钮名称和字体大小添加为对应表,名称等同于actionCommand
      actionCommandSizeMap.put(buttonAttributes[0][i],
          Integer.parseInt(buttonAttributes[1][i]));
    }
  }
  public void addRadioButton(String name, final int size) {
    boolean selected = size == DEFAULT_SIZE;
    JRadioButton button = new JRadioButton(name, selected);
    button.setActionCommand(name);// 设置name即为actionCommand
    group.add(button);
    buttonPanel.add(button);
    // 构造一个监听器,响应checkBox事件
    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        // 1.通过eActionCommand
        String eActionCommand = e.getActionCommand();
        System.out.printf("e.getActionCommand() is %s\n",
            eActionCommand);
        // 2.通过getSource()
        Object sourceObject = e.getSource();
        if (sourceObject instanceof JRadioButton) {
          JRadioButton sourceButton = (JRadioButton) sourceObject;
          System.out.printf("selected JRadioButton is %s\n",
              sourceButton.getText());
        }
        // 3.通过groupSelectionActionCommand
        String groupSelectionActionCommand = group.getSelection()
            .getActionCommand();
        System.out.printf("groupSelectionActionCommand is %s\n",
            groupSelectionActionCommand);
        label.setFont(new Font("Serif", Font.PLAIN,
            actionCommandSizeMap.get(groupSelectionActionCommand)));
      }
    };
    button.addActionListener(actionListener);
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    // 创建窗体并指定标题
    JRadioButtonDemo frame = new JRadioButtonDemo();
    // 关闭窗体后退出程序
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // 自动适配所有控件大小
    // frame.pack();
    // 设置窗体位置在屏幕中央
    frame.setLocationRelativeTo(null);
    // 显示窗体
    frame.setVisible(true);
  }
}

运行效果如下:

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java Swing组件复选框JCheckBox用法示例

    本文实例讲述了Java Swing组件复选框JCheckBox用法.分享给大家供大家参考,具体如下: JCheckBox是Swing中的复选框.所谓复选框就是指,可以同时存在多个这样的控件,它们可以有多个处于被选中状态.对于每一个复选框而言,它只有选中和未选中两种状态. JCheckBox的常用方法如下图所示: 可以为它添加ActionListener对象来响应事件. 使用demo如下: JCheckBoxDemo.java package awtDemo; import java.awt.Bo

  • Java Swing组件下拉菜单控件JComboBox用法示例

    本文实例讲述了Java Swing组件下拉菜单控件JComboBox用法.分享给大家供大家参考,具体如下: JComboBox是Swing中的下拉菜单控件.它永远只能选中一个项目,然而比单选按钮节省空间.如果使用setEditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框.注意,对选项的编辑只会影响当前项,而不会改变列表内容.可以使用addItem方法来添加选项列表,或者使用insertItemAt在任何位置插入选项:然而如果有大量选项需要添加,这种方法是非常笨重的,可

  • java之swing实现复选框的方法

    本文实例讲述了java之swing实现复选框的方法.分享给大家供大家参考.具体如下: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class test extends JApplet implements ItemListener{ JTextField jtf; public void init(){ Container contentPane = getContentPane(); cont

  • Java Swing中的表格(JTable)和树(JTree)组件使用实例

    一:表格(JTable): 1.基本概念: 表格(JTable)是Swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制. 2.常用构造方法: * JTable():使用系统默认的模型创建一个JTable 实例.  * JTable(int numRows,int numColumns):创建一个使用DefaultTableModel 指定行.列的空表格.  * JTable(Object[ ][ ] rowData,Object[ ][ ] columnNa

  • Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局).分享给大家供大家参考,具体如下: FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式,就是内部控件像水流一样,从前到后按顺序水平排列,直到达到容器的宽度时跳转到第二行.既然是水平排列,那么就存在三种基本的对齐方式:居中对齐(CENTER ).左对齐(LEFT )和右对齐(RIGHT ).然而,FlowLayout还提供两种对齐方式:LEADING,表示控件与容器方向开始边对应:TR

  • Java Swing中的文本框(JTextField)与文本区(JTextArea)使用实例

    一:JTextField的(文本框)使用: JTextField 是一个轻量级组件,它允许编辑单行文本. 1.JTextField的常用构造方法: JTextField() 构造一个新的 TextField. JTextField(int columns) 构造一个具有指定列数的新的空 TextField. JTextField(String text) 构造一个用指定文本初始化的新TextField. JTextField(String text, int columns) 构造一个用指定文本

  • Java Swing中JDialog实现用户登陆UI示例

    本文实例讲述了Java Swing中JDialog实现用户登陆UI.分享给大家供大家参考,具体如下: JDialog是一种对话框组件,它常常与JOptionPane配合使用.JOptionPane提供对话框内部的消息.按钮等内容,JDialog提供对话框窗体,提供模态/非模态等属性.JDialog与JFrame在外观上的区别在于,它没有最大化/最小化按钮.如下图所示: JDialog窗体 点击File->connect之后弹出登陆窗口: JFrame窗体 在下面的demo中,演示了JDialog

  • Java Swing组件JFileChooser用法实例分析

    本文实例讲述了Java Swing组件JFileChooser用法.分享给大家供大家参考,具体如下: JFileChooser文件选择器是Swing中经常用到的一个控件.它的使用主要包含以下几个参数: 1.当前路径.也就是它第一次打开时所在的路径,许多软件喜欢设置为桌面. 2.文件过滤器.通过设置文件过滤器,只有特定类型的文件是可见的,比如文本,音频,等. 3.选择模式.包含三种情况:仅文件, 仅目录, 文件或目录. 4.是否允许多选. JFileChooser的参数当然不止以上4种,它还有很多

  • Java Swing中JList选择事件监听器ListSelectionListener用法示例

    本文实例讲述了Java Swing中JList选择事件监听器ListSelectionListener用法.分享给大家供大家参考,具体如下: 当JList中的元素被选中时,选择事件将被触发.对于JTable也是一样,你可以把它看做是多个并列的JList.那么,如果程序需要对该事件做出响应,需要以下步骤: (1)创建一个实现了 ListSelectionListener的监听器: (2)使用JList或selectionModel的addListSelectionListener添加监听器: (3

  • Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

    菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件由菜单栏 (MenuBar).菜单(Menu)和菜单项(MenuItem)三部分组成. 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成.一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可. 常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方). 一:下拉式菜单的创建步骤: 1.创建一个菜单栏.

  • Java Swing中JTable渲染器与编辑器用法示例

    本文实例讲述了Java Swing中JTable渲染器与编辑器用法.分享给大家供大家参考,具体如下: JTable的内容.外观.事件响应在很大程度上是由渲染器与编辑器控制的.具体说来,渲染器负责单元格的外观比如前景色.背景色,以及单元格提示:编辑器负责单元格的内容和事件响应.编辑器默认为文本框形式,也可以使用下拉菜单.按钮.单选按钮等形式.下面通过一个demo程序来说明渲染器与编辑器的基本用法. JButtonTableExample.java package awtDemo; import j

随机推荐