java按钮组件(JButton、JCheckBox)

按钮在Swing中是比较常见的组件,用于触发特定动作,Swing中提供多种按钮组件,如按钮、单选按钮、复选框等,这些按钮都是从AbstractButton类中继承而来的,下面将讲解这些按钮的应用。

1.JButton按钮组件

Swing中的按钮有JButton对象表示,其构造方法主要有以下几种形式。

  • public JButton():创建不带有设置文本或图标的按钮;
  • public JButton(string text):创建一个带文本的按钮;
  • public JButton(Icon icon):创建一个带图标的按钮;
  • public JButton(string text,Icon icon):创建一个带初始文本和图标的按钮;

使用JButton创建完按钮之后,如果要对按钮进行设置,可以使用JButton类提供的方法,JButton类的常用方法及说明如下表:

方法说明
setIcon(Icon defaultIcon)设置按钮的默认图标(defaultIcon)
setToolTipText(String text)为按钮设置提示文字(text)
setBorderPainted(boolean b)设置borderPainted属性,如果该属性为true并且按钮有边框,则绘制该边框,borderPainted属性的默认值为true
set Enabled(boolean b)设置按钮是否可用,参数为true表示按钮可用,为false表示按钮不可用

上述这些对按钮进行设置的方法大多来自JButton的父类AbstractButton类,这里只是简单列举了几个常用的方法,如果有需要可以查询javaAPI,查找更多方法实现相应的功能。

下面是一个有关按钮的实例,代码如下:


import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Demo extends JFrame {
	public Demo() {
		Icon icon = new ImageIcon("src/imageButtoo.jpg");			// 获取图片文件
		setLayout(new GridLayout(3, 2, 5, 5));						// 设置网格布局管理器
		Container c = getContentPane();								// 创建容器
		JButton btn[] = new JButton[6];								// 创建按钮数组
		for (int i = 0; i < btn.length; i++) {
			btn[i] = new JButton();									// 实例化数组中的对象
			c.add(btn[i]);											// 将按钮添加到容器中
		}
		btn[0].setText("不可用");
		btn[0].setEnabled(false);									// 设置其中一些按钮不可用
		btn[1].setText("有背景色");
		btn[1].setBackground(Color.YELLOW);
		btn[2].setText("无边框");
		btn[2].setBorderPainted(false);								// 设置按钮边框不显示
		btn[3].setText("有边框");
		btn[3].setBorder(BorderFactory.createLineBorder(Color.RED));// 添加红色线型边框
		btn[4].setIcon(icon);										// 为按钮设置图标
		btn[4].setToolTipText("图片按钮");							// 设置鼠标悬停时提示的文字
		btn[5].setText("可点击");
		btn[5].addActionListener(new ActionListener() {				// 为按钮添加监听事件
			public void actionPerformed(ActionEvent e) {
				// 弹出确认对话框
				JOptionPane.showMessageDialog(Demo.this, "点击按钮");
			}
		});
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		setTitle("创建不同样式的按钮");	
		setBounds(100, 100, 400, 200);
	}
	public static void main(String[] args) {
		new Demo();
	}
}

返回结果:

上述代码中为可点击的按钮做了触发事件,当点击此按钮会弹出来一个对话框,如下图:

2.JRadioButton单选按钮组件

在默认情况下,单选按钮显示一个圆形图标,并且通常在该图标旁显示说明性文字,而在应用程序中,一般将多个单选按钮放置在按钮中,是这些单选按钮实现某种功能,当用户选中某个单选按钮后,按钮组中其他按钮将自动取消,单选按钮是Swing组件中JRadioButton类的子类,所以控制单选按钮的诸多方法都是AbstractButton类中的方法。

2.1单选按钮

可以使用JRadioButton类中的构造方法创建单选按钮对象,JRadioButton类的常用构造方法主要有以下几种形式:

  • public JRadioButton():创建一个初始化为未选择的单选按钮,其文本未设定;
  • public JRadioButton(Icon  icon):创建一个未被选择的单选按钮,其具有指定的图像但无文本;
  • public JRadioButton(Icon icon,boolean selected):创建一个具有指定图像和选择状态的单选按钮,但无文本;
  • public JRadioButton(String text):创建一个具有指定文本的、状态为未选择的单选按钮;
  • public JRadioButton(String text,Icon icon):创建一个具有指定文本和图像、未被选择的单选按钮;
  • public JRadioButton(String text,Icon icon,boolean selected):创建一个具有指定的文本、图像和选择按钮状态的单选按钮;

根据上述构造方法的形式,可以知道在初始化单选按钮时,可以同时设置单选按钮的图标、文字、以及默认是否被选中等属性,例如,使用JRadioButton类的构造方法创建一个文本为选项A的单选按钮,代码如下:

JRadioButton jr = new JRadioButton("选项A");

2.2按钮组

在Swing中存在一个ButtonGroup按钮组类,该类可以将多个单选按钮绑在一起,实现选项有很多,但只能选中一个的效果,实例化ButtonGroup对象之后可以使用add()方法将多个单选按钮添加到按钮组中,代码如下:

JRadioButton jr1 = new JRadioButton("按钮1");
JRadioButton jr2 = new JRadioButton("按钮2");
JRadioButton jr3 = new JRadioButton("按钮3");
ButtonGroup group = new ButtonGroup();
group.add(jr1);
group.add(jr2);
group.add(jr3);

从上述代码中可以看出,单选按钮与按钮的用法基本类似,只是创建单选按钮对象后需要将其添加至按钮组中,下面来看一个实例,模拟选择邮件的发送方式,向窗体添加两个单选按钮,并分别为它们添加动作事件监听器,再该事件监听器中实现选中单选按钮时弹出提示的功能,代码如下:


import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;

public class Dpc extends JFrame {
	public Dpc() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("单选按钮的使用");
		setBounds(100, 100, 220, 120);
		setVisible(true);
		Container ct = getContentPane();
		ct.setLayout(null);// 设置绝对布局
		//创建标签
		JLabel lblNewLabel = new JLabel("请选择发送方式:");
		lblNewLabel.setBounds(5, 5, 120, 15);
		ct.add(lblNewLabel);
		//创建单选按钮
		JRadioButton rbtnNormal = new JRadioButton("普通发送");
        //设置单选按钮默认选择状态true
		rbtnNormal.setSelected(true);
		rbtnNormal.setFont(new Font("宋体", Font.PLAIN, 12));
		rbtnNormal.setBounds(20, 30, 75, 22);
		rbtnNormal.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (rbtnNormal.isSelected())// 判断普通发送单选按钮是否选中
					//弹出对话框
					JOptionPane.showMessageDialog(null, "您选择的是:" + rbtnNormal.getText(), "提醒",
							JOptionPane.INFORMATION_MESSAGE);
			}
		});
		JRadioButton rbtnPwd = new JRadioButton("加密发送");
		rbtnPwd.setFont(new Font("宋体", Font.PLAIN, 12));
		rbtnPwd.setBounds(100, 30, 75, 22);
		rbtnPwd.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (rbtnPwd.isSelected())// 判断加密发送单选按钮是否选中
					//弹出对话框
					JOptionPane.showMessageDialog(null, "您选择的是:" + rbtnPwd.getText(), "提醒",
							JOptionPane.INFORMATION_MESSAGE);
			}
		});
		//将单选按钮添加到容器
		ct.add(rbtnPwd);
		ct.add(rbtnNormal);
		/**
		 * 创建按钮组,把交互面板中的单选按钮添加到按钮组中
		 */
		ButtonGroup group = new ButtonGroup();
		group.add(rbtnNormal);
		group.add(rbtnPwd);
	}

	public static void main(String[] args) {
		new Dpc();
	}
}

返回结果:

                 

3.JCheckBox

复选框在Swing组件中的使用也非常广泛,它具有一个方块图标,外加一段描述性文字,与单选按钮唯一不同的是,复选框可以进行多选操作,每一个复选框都提供选中(true)不选中(false)两个状态,复选框用JCheckBox类的对象表示,他用样继承于AbstractButton类,所以复选框组件的属性也来源于AbstractButton类,构造方法如下:

  • public JCheckBox():创建一个没有文本,没有图标并且最初未被选定的复选框;
  • public JCheckBox(icon icon,Boolean checked):创建一个带图标的复选框,并指定其最初是否处于选定状态;
  • public JCheckBox(String text,Boolean checked):创建一个带文本的复选框,并指定其最初是否处于选定状态;

下面看一个例子,使用JCheckBox类的构造方法创建3个复选框对象,使用JButton类创建一个普通按钮,给按钮添加监听事件,用于控制台打印3个复选框的选中状态,代码如下:


import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Dpc extends JFrame {
	public Dpc() {
		Container c = getContentPane();// 获取窗口容器
		c.setLayout(new FlowLayout());// 容器使用流布局
		setBounds(100, 100, 170, 110);// 窗口坐标和大小
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		JCheckBox c1 = new JCheckBox("1");// 创建复选框
		JCheckBox c2 = new JCheckBox("2");
		JCheckBox c3 = new JCheckBox("3");
		c.add(c1);// 容器添加复选框
		c.add(c2);
		c.add(c3);
		JButton btn = new JButton("打印");// 创建打印按钮
		btn.addActionListener(new ActionListener() {// 打印按钮动作事件
			public void actionPerformed(ActionEvent e) {
				// 在控制台分别输出三个复选框的选中状态
				System.out.println(c1.getText() + "按钮选中状态:" + c1.isSelected());
				System.out.println(c2.getText() + "按钮选中状态:" + c2.isSelected());
				System.out.println(c3.getText() + "按钮选中状态:" + c3.isSelected());
			}
		});
		c.add(btn);// 容器添加打印按钮
	}
	public static void main(String[] args) {
		new Dpc();
	}
}

返回结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值