首页上一页 1 下一页尾页 1 条记录 1/1页
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");
}
}
}
}
书中对于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");
}
}
}
}