Swing常用组件之单选按钮和复选框
作者:希文go 发布时间:2023-02-15 13:35:05
本文为大家分享了Swing单选按钮和复选框的使用方法,供大家参考,具体内容如下
JRadioButton构造函数:
JRadioButton():建立一个新的JRadioButton.
JRadioButton(Icon icon):建立一个有图像但没有文字的JRadioButton.
JRadioButton(Icon icon,boolean selected):建立一个有图像但没有文字的JRadioButton,且设置其初始状态(有无被选取).
JRadioButton(String text):建立一个有文字的JRadioButton.
JRadioButton(String text,boolean selected):建立一个有文字的JRadioButton,且设置其初始状态(有无被选取)。
JRadioButton(String text,Icon icon):建立一个有文字且有图像的JRadioButton,初始状态为无被选取。
JRadioButton(String text,Icon icon,boolean selected):建立一个有文字且有图像的JRadioButton,且设置其初始状态(有无被选取)
要将RadioButton改成单选,我们必须用到ButtonGroup这个类。这个类位于javax.swing这个package下面,ButtonGroup类的主 要功能是:同一时间内只会有一个组件的状态为"on",其他皆为"off",也就是同一时间只有一个组件会被选取。而ButtonGroup类可 被AbstractButton下面的子类所使用,最常被使用的就是JRadioButton、JradioButtonMenu、Item与JToggleButton这些组件
ButtonGroup类的构造方法如下:
ButtonGroup()创建一个新的ButtonGroup()
ButtonGroup()类的常用的方法如下:
public void add(AbstractButton b):添加按钮到组中
public void clearSelection():清除选中内容,即没有选中按钮组中的任何按钮
pubic int getButtonCount():获取此组中的按钮数
public Enumeration<AbstractButton>getElemeent():获取此组中的所用按钮
public void remove (AbstractButton b):从按钮中删除按钮
JCheckBox构造函数
JCheckBox():建立一个新的JChcekBox.
JCheckBox(Icon icon):建立一个有图像但没有文字的JCheckBox.
JCheckBox(Icon icon,boolean selected):建立一个有图像但没有文字的JCheckBox,且设置其初始状态(有无被选取)。
JCheckBox(String text):建立一个有文字的JCheckBox.
JCheckBox(String text,boolean selected):建立一个有文字的JCheckBox,且设置其初始状态(有无被选取)。
JCheckBox(String text,Icon icon):建立一个有文字且有图像的JCheckBox,初始状态为无被选取。
JCheckBox(String text,Icon icon,boolean selected):建立一个有文字且有图像的JCheckBox,且设置其初始状态(有无被选取 )。
当JCheckBox中的选项被选取 或取消时,它会触发ItemEvent的事件,ItemEvent这个类共提供了4种方法可以使用,分别是getItem()、getItemSelectable()、 getStateChange()、paramString()。getItem()与paramString()方法会返回一些这个JCheckBox的状态值。一般我们较少用到这两 个方法。
getItemSelectable()相当于getSource()方法,一样都是返回触发事件的组件,用来判断是那个组件产生事件。getSource()方法是EventObject类所提供,而所有事件类都会继承这个类,因此所有的事件我们均能用getSource() 方法来判断到底是哪个组件触发了事件。
最后getStateChange()方法会返回此组件到底有没有被选取。这个方法会返回一个整数值。而我们可以用ItemEvent所提供的类 变量;若被选取则返回SELECTED,若没有被选取则返回DESELECTED.
单选按钮和复选框注册和注销ItemEvent事件 * 的方法如下:
public void addItemListener(ItemListener l): 注册指定的ItemListener事件 *
public void removeItemListener(ItemListener l): 注销指定的ItemListener事件 *
package ch10;
import java.awt.event.*;
import javax.swing.*;
public class Vote extends JFrame implements ActionListener
{
private JPanel jp = new JPanel();
JRadioButton jrb1 = new JRadioButton("这个网站很好,很新颖!",true);
JRadioButton jrb2 = new JRadioButton("这个网站很普通,太一般");
JRadioButton jrb3 = new JRadioButton("这个网站很差,偶尔看一下");
JRadioButton jrb4 = new JRadioButton("这个网站太差了,不来了");
private JRadioButton[] jrb = new JRadioButton[]{jrb1,jrb2,jrb3,jrb4};
private ButtonGroup bg = new ButtonGroup();
JCheckBox jcb1 = new JCheckBox("界面比较漂亮");
JCheckBox jcb2 = new JCheckBox("内容比较丰富");
JCheckBox jcb3 = new JCheckBox("增值服务比较好");
JCheckBox jcb4 = new JCheckBox("会员服务比较好");
private JCheckBox[] jcb =new JCheckBox[]{jcb1,jcb2,jcb3,jcb4};
private JButton [] jb = {new JButton("我要投票"),new JButton("我要重选")};
private JLabel[] jl = {new JLabel("这个网站给你的印象是:"),new JLabel("您认为本站哪里做的比较好"),new JLabel("您投票的内容是:")};
private JTextArea jt = new JTextArea();
private JScrollPane js= new JScrollPane(jt);
public Vote()
{
jp.setLayout(null);
for(int i=0;i<4;i++)
{
jrb[i].setBounds(30+170*i,40,170,30);
jcb[i].setBounds(30+120*i,100,120,30);
jp.add(jrb[i]);
jp.add(jcb[i]);
jcb[i].addActionListener(this);
jrb[i].addActionListener(this);
bg.add(jrb[i]);
if(i>1)
continue;
jl[i].setBounds(20,20+50*i,200,30);
jb[i].setBounds(380+120*i,200,100,20);
jp.add(jl[i]);
jp.add(jb[i]);
jb[i].addActionListener(this);
}
jl[2].setBounds(20,150,120,30);
jp.add(jl[2]);
js.setBounds(120,150,500,50);
jp.add(js);
jt.setLineWrap(true);
jt.setEditable(false);
this.add(jp);
this.setTitle("网站满意调查表");
this.setBounds(150,150,750,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent a)
{
if(a.getSource()==jb[1])
{
bg.clearSelection();
for(int i=0;i<jcb.length;i++)
jcb[i].setSelected(false);
jt.setText("");
}
else
{
StringBuffer temp1 = new StringBuffer("你认为这个网站");
StringBuffer temp2 = new StringBuffer("");
for(int i=0;i<4;i++)
{
if(jrb[i].isSelected())
temp1.append(jrb[i].getText());
if(jcb[i].isSelected())
temp2.append(jcb[i].getText()+",");
}
if(temp2.length()==0)
jt.setText("请将两项调查都选择");
else
{
temp1.append("你认为这个网站");
temp1.append(temp2.substring(0,temp2.length()-1));
jt.setText(temp1.toString());
}
}
}
public static void main(String args[])
{
new Vote();
}
}
效果图:


猜你喜欢
- 测试代码如下: package swt_jface.demo; import org.eclipse.jface.window.Applic
- 一、平衡二叉树的定义平衡二叉树是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1 。它是一种高度平衡的二叉排序树。意思是说,
- 一、什么是冒泡排序冒泡排序的英文是bubble sort,它是一种基础的交换排序。说到冒泡是不是就想起了快乐肥宅水呢?汽水中有许多小小的水泡
- ThreadLocal,直译为“线程本地”或“本地线程”,如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为
- 本文实例讲述了Java自定义标签用法。分享给大家供大家参考,具体如下:简单例子实现一个标签分为两步:(1)继承SimpleTagSuppor
- Spring Boot1.为什么要使用 Spring Boot因为Spring, SpringMVC 需要使用的大量的配置文件 (xml文件
- 本文实例为大家分享了Java实现猜拳游戏的具体代码,供大家参考,具体内容如下一、问题简介通过控制台方式实现一个人机对战的猜拳游戏,用户通过输
- 本文实例讲述了Java Swing实现窗体添加背景图片的2种方法。分享给大家供大家参考,具体如下:在美化程序时,常常需要在窗体上添加背景图片
- Thread parameterThread_t = null; private void Print_DetailForm_S
- 前言嗯。最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了。撒花。Java的位运算以及b
- 众所周知Web服务器与客户端之间的通信是使用HTTP协议的。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。因为HTTP协议是基于
- 前言植物大战僵尸的数据文件是存储在本地的dat文件当中,修改在本地的dat文件就可以修改到游戏中的数据。之前使用二进制编码工具Hex Edi
- 什么是JPA一种规范,并非ORM框架,也就是ORM上统一的规范spring-boot-starter-data-jpa 
- 换了工作要把Java重新捡起来了,这个在大学里用过的语言,虽然不复杂,还是有一些奇怪的地方的。比如static import。Static
- 今天看一个教程,看到一个颜色渐变的ProgressBar,觉得有点意思,所以记录一番。下面这个是效果图颜色渐变的ProgressBar看到效
- 先来看看效果实现效果模拟水波纹的效果:点击屏幕就有圆环出现,半径从小到大,透明度从大到小(0为透明)实现思路 &nbs
- 先看看常规的隐藏状态栏的方法:方法一:@Overrideprotected void onCreate(Bundle savedInstan
- 在C#中用同一个dataset保存从数据库中取出的多张表:cmd.CommandText = "select * from tab
- 1.元组(Tuple)元组(Tuple)在4.0 的时候就有了,但元组也有些缺点,如: 1)Tuple 会影响代码的
- Metro UI For JavaFX!这是一个Windows设计风格的UI库,使用非常简单,只要一行代码就可以实现整体UI风格的替换!ne