Java中的JRadioButton和JCheckBox有什么区别?

What are the differences between JRadioButton and JCheckBox in Java?

JRadioButton和JCheckBox组件都可以扩展JToggleButton类,主要区别在于JRadioButton是一组按钮,一次只能选择一个按钮,而JCheckBox是一组复选框,一次可以选择多个项目。

JRadioButton

  • JRadioButton是一个组件,它代表处于选中或未选中状态的项目。通常,创建一组单选按钮以向用户提供选项,但仅
    一次可以选择一个选项。
  • JRadioButton将生成一个ActionListener,ChangeListener和ItemListener接口。
  • 单选按钮通常用于组中以显示多个选项,因此,它们与ButtonGroupclass一起使用。 ButtonGroup具有一个属性,即在给定的时间仅选择一个组中的一个按钮,并且该按钮不具有视觉外观。
  • JRadioButton的重要方法是setText(),getText(),setEnabled(),setMnemonic()等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.awt.*;
import javax.swing.*;
public class JRadioButtonTest extends JFrame {
 public JRadioButtonTest() {
   super("JRadioButton Test");
   JRadioButton jrb1 = new JRadioButton("Java");
   JRadioButton jrb2 = new JRadioButton("Python");
   JRadioButton jrb3 = new JRadioButton("Scala");
   ButtonGroup group = new ButtonGroup();
   group.add(jrb1);
   group.add(jrb2);
   group.add(jrb3);
   setLayout(new FlowLayout());
   add(jrb1);
   add(jrb2);
   add(jrb3);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setSize(450,375);
   setLocationRelativeTo(null);
   setVisible(true);
 }
 public static void main(String[] args) {
   SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
      new JRadioButtonTest();
    }
   });
 }
}

输出量

JCheckBox

  • JCheckBox是代表一个项目的组件,该项目显示选中或未选中的状态。我们可以通过单击组件的复选框来更改此状态。
  • 一个标准的JCheckBox组件包含一个复选框和一个描述该复选框用途的标签。
  • JCheckBox可以生成ItemListener或ActionListener接口。
  • JCheckBox的重要方法是setLabel(),getLabel(),setState(),getState()等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.awt.*;
import javax.swing.*;
public class JCheckBoxTest extends JFrame {
 JCheckBoxTest() {
   super("JCheckBox Test");
   JLabel lblHobbies = new JLabel("Languages");
   JCheckBox chkSports = new JCheckBox("Java");
   JCheckBox chkMusic = new JCheckBox("Python",true);
   JCheckBox chkReading = new JCheckBox("Scala");
   setLayout(new FlowLayout());
   add(lblHobbies);
   add(chkSports);
   add(chkMusic);
   add(chkReading);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   setSize(450,375);
   setLocationRelativeTo(null);
   setVisible(true);
 }
 public static void main(String[] args) {
   SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
      new JCheckBoxTest();
    }
   });
 }
}

输出量