已有101人关注
Java Swing程序设计中单选按钮和复选框的本质区别是什么
发表在Java图书答疑 2016-05-25
是否精华
版块置顶:
JRadioButton类和JCheckBox类本质有什么区别?
书中对于JRadioButton类指的是单选按钮,而JCheckBox类指的是复选框,这两个类都是继承自JToggleButton类即具有两个选择状态的按钮实现,JRadioButton类要实现单选功能,必须把JRadioButton对象放入按钮组ButtonGroup对象中,如果不放入按钮组中,JRadioButton类对象和JCheckBox类对象一样,都可以同时被选中或取消,而且把JCheckBox类对象放入按钮组中一样可以实现单选功能,那么这两个类本质上有什么区别呢?

以下代码实现了单选按钮和复选框的功能,但是释放注释的代码将复选框组件添加到按钮组后,复选框也成为了单选按钮:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JRadioButtonAndJCheckBox extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JTextArea ta;
private JCheckBox cb1,cb2,cb3;

public JRadioButtonAndJCheckBox() {
Container c=getContentPane();
c.setLayout(new BorderLayout());
ButtonGroup bg=new ButtonGroup();
JRadioButton rb1=new JRadioButton("男");
rb1.setActionCommand("rb1");
rb1.addActionListener(this);
rb1.setSelected(true);
JRadioButton rb2=new JRadioButton("女");
rb2.setActionCommand("rb2");
rb2.addActionListener(this);
bg.add(rb1);
bg.add(rb2);
cb1=new JCheckBox("1");
cb1.setActionCommand("cb1");
cb1.addActionListener(this);
cb2=new JCheckBox("2");
cb2.setActionCommand("cb2");
cb2.addActionListener(this);
cb3=new JCheckBox("3");
cb3.setActionCommand("cb3");
cb3.addActionListener(this);
ta=new JTextArea(5,20);
JScrollPane sp=new JScrollPane(ta);
JPanel p=new JPanel(new GridLayout(2, 1));
JPanel p1=new JPanel(new FlowLayout());
JPanel p2=new JPanel(new FlowLayout());
p1.add(rb1);
p1.add(rb2);
// 释放以下注释代码将复选框组件添加进按钮组
// bg.add(cb1);
// bg.add(cb2);
// bg.add(cb3);
p2.add(cb1);
p2.add(cb2);
p2.add(cb3);
c.add(sp,BorderLayout.NORTH);
p.add(p1);
p.add(p2);
c.add(p, BorderLayout.SOUTH);
setTitle("单选按钮和复选按钮");
setVisible(true);
setSize(200, 200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}

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

public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("rb1")){
ta.append("男 被选中 女 被取消\n");
}
if(e.getActionCommand().equals("rb2")){
ta.append("女 被选中 男 被取消\n");
}
if(e.getActionCommand().equals("cb1")){
if(cb1.isSelected()){
ta.append("复选按钮1被选中\n");
}else{
ta.append("复选按钮1被取消\n");
}
}
if(e.getActionCommand().equals("cb2")){
if(cb2.isSelected()){
ta.append("复选按钮2被选中\n");
}else{
ta.append("复选按钮2被取消\n");
}
}
if(e.getActionCommand().equals("cb3")){
if(cb3.isSelected()){
ta.append("复选按钮3被选中\n");
}else{
ta.append("复选按钮3被取消\n");
}
}
}

}
分享到:
精彩评论 1
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2016-05-26
沙发
区别就是:长相不一样
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照