Java GUI编程11—单选按钮:JRadioButton

Java GUI编程11—单选按钮:JRadioButton认识JRadionButton单选按钮就是在给定的多个选择项中选择一个,并且只能选择一个。在Swing中可以使用JRadioButton完成一组单选按钮的操作,JRadioButton的常用方法如下表。序号方法描述123456…

大家好,又见面了,我是你们的朋友全栈君。

认识JRadioButton

单选按钮就是在给定的多个选择项中选择一个,并且只能选择一个。在Swing中可以使用JRadioButton完成一组单选按钮的操作,JRadioButton的常用方法如下表。

序号 方法 描述
1 public JRadioButton(Icon icon) 创建一个单选按钮,并设定图片
2 public JRadioButton(Icon icon, boolean selected) 创建一个单选按钮,设定图片,并设定是否选中
3 public JRadioButton(String text) 创建一个单选按钮,制定按钮文本,默认不选中
4 public JRadioButton(String text, boolean selected) 创建一个具有指定文本和选择状态的单选按钮。
5 public JRadioButton(String text, Icon icon, boolean selected) 创建一个具有指定的文本、图像和选择状态的单选按钮。
6 public void setSelected(boolean b) 设置按钮是否被选中,从类 javax.swing.AbstractButton 继承
7 public boolean isSelected() 返回该按钮是否被选中,如果选定了按钮,则返回 true,否则返回 false。从类 javax.swing.AbstractButton 继承
8 public void setText(String text) 设置按钮的显示文本。从类 javax.swing.AbstractButton 继承
9 public void setIcon(Icon defaultIcon) 设置按钮的默认图标。

实例:显示单选按钮

package java1.swing.buttons;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.BorderFactory;
//完成单选的实现
class MyRadio
{ 
   
	//设置一窗体
	private JFrame frame = new JFrame("单选按钮");
	//获取窗体容器
	private Container cont = frame.getContentPane();
	//定义三个窗体按钮
	private JRadioButton jradio1 = new JRadioButton("男");
	private JRadioButton jradio2 = new JRadioButton("女");
	//定义一个面板
	private JPanel pan = new JPanel();
	public MyRadio()
	{ 
   
		//设置边框显示条
		pan.setBorder(BorderFactory.createTitledBorder("性别:"));
		//定义排版样式
		pan.setLayout(new GridLayout(3, 1));
		pan.add(this.jradio1);
		pan.add(this.jradio2);
		cont.add(pan);
		this.frame.setSize(400, 200);
		this.frame.setVisible(true);
		//监听窗体关闭事件
		this.frame.addWindowListener(new WindowAdapter()
		{ 
   
			public void windowClosing(WindowEvent obj)
			{ 
   
				System.exit(1);
			}
		});
	}
}
public class JRadioButtonDemo01
{ 
   
	public static void main(String args[])
	{ 
   
		new MyRadio();
	}
}

运行效果:
运行效果
上面的程序中正确的显示了一个面板,而且因为在设置面板的时候使用了setBorder()方法,所以在面板上定义了一个标题的边框。
问题:
上面的程序中只是在按钮样式像单选按钮,单并不能实现单选的功能,我们可以同时选中上面的所有按钮。运行结果如下。

没有实现单选
从运行结果来看,此时已经形成多选的功能了。之所以会出现这样的问题,主要是由于并没有将所有的单选按钮加入到一个组件中。使用ButtonGroup就可以实现将所有的单选按钮加入到一个组件中,使用方式如下:

//定义按钮组
ButtonGroup group=new ButtonGroup();
group.add(jradio1);
group.add(jradio2);

此时运行就不会出现多选的情况了。现在只能选中一个按钮,如果选中下一个按钮,上一个选中的按钮就会变成未选中。
实现单选功能
完整代码如下:

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
//完成单选的实现
class MyRadio
{ 
   
	//设置一窗体
	private JFrame frame = new JFrame("单选按钮");
	//获取窗体容器
	private Container cont = frame.getContentPane();
	//定义三个窗体按钮
	private JRadioButton jradio1 = new JRadioButton("男");
	private JRadioButton jradio2 = new JRadioButton("女");
	//定义一个面板
	private JPanel pan = new JPanel();
	public MyRadio()
	{ 
   
		//设置边框显示条
		pan.setBorder(BorderFactory.createTitledBorder("性别:"));
		//定义排版样式
		pan.setLayout(new GridLayout(3, 1));
		//定义按钮组
		ButtonGroup group=new ButtonGroup();
		//把单选按钮添加到按钮组中,这样只能选组中的一个按钮,真正实现单选
		group.add(jradio1);
		group.add(jradio2);
		pan.add(this.jradio1);
		pan.add(this.jradio2);
		cont.add(pan);
		this.frame.setSize(400, 200);
		this.frame.setVisible(true);
		//监听窗体关闭事件
		this.frame.addWindowListener(new WindowAdapter()
		{ 
   
			public void windowClosing(WindowEvent obj)
			{ 
   
				System.exit(1);
			}
		});
	}
}
public class JRadioButtonDemo01
{ 
   
	public static void main(String args[])
	{ 
   
		new MyRadio();
	}
}

JRadioButton事件处理

在单选按钮操作中,可以使用ItemListener接口进行事件的监听。此接口定义了如下表所示的方法。

序号 方法 描述
1 void itemStateChanged(ItemEvent e) 在用户已选定或取消选定某项时调用。

此方法中存在ItemEvent事件,此事件的常用方法及常量如下表所示。

序号 常量 描述
1 public static int SELECTED 选项被选中
2 public static int DESELECTED 选项取消选中
序号 描述
1 public Object getItem() 返回受事件影响的选项。
2 public int getStateChange() 返回状态更改的类型(已选定或已取消选定

实例:单选按钮事件操作—性别选择

package java1.swing.buttons;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
class MyRadio1 implements ItemListener
{ 
   
	//图标路径
	private String male ="D:\\dev\\java\\my\\icon\\my\\图标男压缩.jpg";
	private String female = "D:\\dev\\java\\my\\icon\\my\\图标女压缩.jpg";
	private JFrame frame = new JFrame("单选按钮事件");
	private Container cont = frame.getContentPane();
	private JRadioButton jradionmale = new JRadioButton("男");
	private JRadioButton jradiofemale = new JRadioButton("女");
	private JPanel pan = new JPanel();
	public MyRadio1()
	{ 
   
		//设置显示条
		pan.setBorder(BorderFactory.createTitledBorder("选择性别"));
		//设置排版
		pan.setLayout(new GridLayout(1, 3));
		//面板中加入两个单选按钮
		pan.add(this.jradionmale);
		pan.add(this.jradiofemale);
		//设置按钮组
		ButtonGroup group = new ButtonGroup();
		group.add(this.jradionmale);
		group.add(this.jradiofemale);
		//单选按钮设置监听器
		jradionmale.addItemListener(this);
		jradiofemale.addItemListener(this);
		//面板加入到框架的容器中
		cont.add(pan);
		this.frame.setSize(400, 200);
		this.frame.setVisible(true);
		//监听窗体关闭事件
		this.frame.addWindowListener(new WindowAdapter()
		{ 
   
			public void windowClosing(WindowEvent obj)
			{ 
   
				System.exit(1);
			}
		});
	}
	public void itemStateChanged(ItemEvent e)
	{ 
   
		if (e.getSource() == jradionmale)
		{ 
   
			jradionmale.setIcon(new ImageIcon(male));
			jradiofemale.setIcon(null);
		} else
		{ 
   

			jradiofemale.setIcon(new ImageIcon(female));
			jradionmale.setIcon(null);
		}
	}
}
public class JRadioButtonDemo03
{ 
   
	public static void main(String args[])
	{ 
   
		new MyRadio1();
	}
}

图标男:
这里写图片描述
图标女:
这里写图片描述

运行结果:
刚开始效果
选择男,运行效果:
选择男
选择女,运行效果:
选择女
在上面的程序中,使用ImageIcon设置凉了单选按钮的图片,每次选项改变后都会触发itemStateChanged事件,之后修改每个选项显示图片。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139173.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 部署环境什么意思_离线部署net

    部署环境什么意思_离线部署netNeokylin-Server离线环境部署Minio+keepalived集群Neokylin-Server离线环境部署Minio+keepalived集群一、说明二、部署过程:1.切换root账号或所有语句加sudo;2.关闭6个节点防火墙(或打开端口);3.设置所有节点;4.时间同步;5.3个节点创建目录与文件;6.添加权限;7.启动minio服务;8.n1-n3部署keepalived;Neokylin-Server离线环境部署Minio+keepalived集群一、说明背景:N

    2022年8月10日
    6
  • php环境安装与配置_windows下php环境搭建

    php环境安装与配置_windows下php环境搭建配置时区打开php解压目录,找到php.ini-development文件,将其改名为php.ini,用记事本打开。找到(带分号);date.timezone=去掉前面的分好,修改为date.timezone=Asia/Shanghai测试:在根目录下的index.php文件夹中写入以下代码<?phpechodate(“Y:m:dH:i:s”…

    2022年9月22日
    3
  • ifconfig 与 ip addr 命令详解 – 学习/实践

    ifconfig 与 ip addr 命令详解 – 学习/实践1.应用场景 主要用于了解学习,掌握使用IP地址相关知识, 如何查看IP信息,以及各个参数代表的含义 2.学习/操作 1.文档阅读 网络协议概论|Laravel学院-不定期分享之ifconfig与ipaddr命令详解 2.整理输出 2.1如何查看机器的IP地址 我们在Linux系统查看IP地址通常有以下两种方式: 1)ifconfig 2)ipaddr

    2022年7月27日
    28
  • 用拉普拉斯变换求零状态响应_什么是UPS?为什么用UPS?关于UPS电源的知识都在这里!…[通俗易懂]

    用拉普拉斯变换求零状态响应_什么是UPS?为什么用UPS?关于UPS电源的知识都在这里!…[通俗易懂]来源:电气设计圈如有侵权,请联系删除UPS种类、功能、原理1什么是UPSUPS-UninterruptedPowerSystem;利用电池化学能作为后备能量,在市电断电等电网故障时,不间断地为用户设备提供(交流)电能的一种能量转换装置。2为什么用UPSUPS的四大功能:1不停电功能,解决电网停电问题;2交流稳压功能,解决网压剧烈波动问题;3净化功能,解决电网与电源污染问题;4管理功能…

    2022年5月10日
    47
  • 互斥量Mutex的简单应用

    互斥量Mutex的简单应用一、互斥量的简单介绍互斥量是一个内核对象,它用来确保一个线程独占一个资源的访问。互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。1) CreateMutex函数功能:创建互斥量函数原型:HANDLECreateMutex(LPSECURITY_ATTRIBUTES…

    2022年6月26日
    31
  • 安卓和ios之间文件互传_安卓转移到iphone12

    安卓和ios之间文件互传_安卓转移到iphone12如果之前是安卓用户,在购买iphone12新款手机之后,如何从安卓转移数据到ios?可以通过苹果官方提供的“转移到ios”应用,将安卓手机中的内容进行转移,感兴趣的朋友快来看看吧!如何将数据从安卓设备转移到iphone12可转移的内容包括:通讯录、信息历史记录、相机照片和视频、web书签、邮件帐户和日历。转移完成之后,您可以从appstore下载任何匹配的免费app。使用前准备…

    2022年9月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号