Java Swing组件:按钮

       按钮是图形用户界面中最常见的组件之一。按钮组件可分为四种:普通按钮(JButton)、切换按钮(JToggleButton)、复选按钮(JCheckBox)和单选按钮(JRadioButton),其中,Jbutton和JToggleButton是抽象类AbstractButton的子类,JCheckBox和JRadioButton是JToggleButton的子类。AbstractButton中定义了各种按钮都共有的一些方法,例如,设置文本、设置图标、注册事件监听器等。(Java Swing组件

       1. 普通按钮

       普通按钮(JButton)是使用最为广泛的一种按钮。Jbutton类的构造方法如下:

  • JButton():创建一个无文本和图标的空普通按钮。
  • JButton(String text):创建一个带文本的普通按钮。
  • JButton(Icon icon):创建一个带图标的普通按钮。
  • JButton(String text, Icon icon):创建一个带文本和图标的普通按钮。

       2. 切换按钮

       切换按钮(JToggleButton)具有两种状态:选中状态和未选中状态。通过isSelected()方法可以获知切换按钮的当前状态,当返回值为true表示处于选中状态,而返回值为false则表示处于未选中状态。默认情况下,切换按钮为未选中状态,JToggleButton类的构造方法如下:

  • JToggleButton():创建一个无文本和图标的空切换按钮。
  • JToggleButton(String text):创建一个带文本的切换按钮。
  • JToggleButton(String text, boolean selected):创建一个带文本和指定初始状态的切换按钮。
  • JToggleButton(Icon icon):创建一个带图标的切换按钮。
  • JToggleButton(Icon icon, boolean selected):创建一个带图标和指定初始状态的切换按钮。
  • JToggleButton(String text, Icon icon, boolean selected):创建一个带文本和图标以及指定始状态的切换按钮。

        3. 复选和单选按钮

       复选按钮(JCheckBox)和单选按钮(JRadioButton)是切换按钮的子类, JCheckBox和JradioButton构造方法的格式与JToggleButton相同。JCheckBox和JRadioButton可以通过按钮组(ButtonGroup)进行分组,JCheckBox加入按钮组后只能单选,JRadioButton没有加入按钮组可以多选。

        例如,下面代码将三个单选按钮rb1、rb2和rb3放到按钮组group中,这时,只能选择三个单选按钮之一,如果它们没有放到一个按钮组中,则这三个单选按钮也能够复选。

ButtonGroup group=new ButtonGroup();

JRadioButton rb1=new JRadioButton("rb1");

JRadioButton rb2=new JRadioButton("rb2");

JRadioButton rb3=new JRadioButton("rb3");

group.add(rb1);group.add(rb2);group.add(rb3);//将三个单选按钮放到按钮组中

       类似地,如果将一组复选按钮放到一个按钮组中,那么只能选择这些复选按钮之一。

【例1】复选按钮和单选按钮的使用。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JToggleButtonDemo extends JFrame{
	JPanel panel1=new JPanel();
	JPanel panel2=new JPanel();
	JTextArea textArea=new JTextArea();
	JLabel label1=new JLabel("编程语言:");
	JLabel label2=new JLabel("专业:");
	JCheckBox cb[]= {new JCheckBox("C"), new JCheckBox("C++"),
			         new JCheckBox("Java"), new JCheckBox("Python")};
	JRadioButton rb[]= {new JRadioButton("计算机科学与技术"),
			            new JRadioButton("软件工程"),
			            new JRadioButton("人工智能")};
	JRadioButton rb1=new JRadioButton("计算机科学与技术");
	JRadioButton rb2=new JRadioButton("软件工程");
	JRadioButton rb3=new JRadioButton("人工智能");
	boolean language[]=new boolean[cb.length];
	String major="";
	public JToggleButtonDemo() {
		this.setTitle("复选与单选按钮示例");
		this.setSize(400, 200);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane=this.getContentPane();
		contentPane.setLayout(new GridLayout(3,1,1,1));//网格布局
		//将标签label1和所有复选按钮放到面板panel1中
		panel1.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel1.add(label1);
		for(int i=0;i<cb.length;i++) {
			panel1.add(cb[i]);//将复选按钮放到panel1上
			cb[i].addItemListener(il);//注册选项事件监听器
		}
		//将标签label2和所有单选按钮放到面板panel2中
		panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel2.add(label2);
		ButtonGroup group=new ButtonGroup();//单选按钮分组
		for(int i=0;i<rb.length;i++) group.add(rb[i]);
		for(int i=0;i<rb.length;i++) {
			panel2.add(rb[i]);//将单选按钮放到panel2上
			rb[i].addItemListener(il);//注册选项事件监听器
		}
	
		contentPane.add(panel1);
		contentPane.add(panel2);
		contentPane.add(new JScrollPane(textArea));
		this.setVisible(true);
	}
	//选项事件监听器(匿名类)
	ItemListener il=new ItemListener() {
		//选项事件处理方法
		public void itemStateChanged(ItemEvent e) {
			//获取事件源并转换为切换按钮对象
			JToggleButton jtb=(JToggleButton)e.getSource();
			textArea.setText("");//设置文本区为空
			//保存复选按钮的状态
			if(jtb instanceof JCheckBox) {
				for(int i=0;i<cb.length;i++) {
					if(jtb==cb[i])
						language[i]=jtb.isSelected();
				}
			}
			//将所有被选中的复选按钮的文信息本插入到文本区中
			for(int i=0;i<cb.length;i++) {
				if(language[i]) {
					textArea.append(cb[i].getText()+"\n");
				}
			}
			//获取被选中的单选按钮文本信息
			if(jtb instanceof JRadioButton && jtb.isSelected()) {
				major=jtb.getText();
			}
			//将被选中的单选按钮插入到文本域中
			if(!major.equals("")) {
				textArea.append(major);
			}
		}
	};
	public static void main(String[] args) {
		JToggleButtonDemo frame=new JToggleButtonDemo();
	}
}

       运行上述程序,显示结果如图1(a)所示。加入我们选择编程语言中的Java和Python复选按钮,以及选择专业中的软件工程单选按钮,则在窗口下面的文本域中显示被选中按钮的文本信息,如图1(b)所示。

(a)

(b)

图1. 复选按钮与单选按钮使用示例

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值