Java Swing组件JCheckBox和JRadioButton的简单使用
程序员文章站
2024-01-31 13:37:40
...
一、Java Swing组件JCheckBox和JRadioButton
-
JCheckBox
JCheckBox是一个复选框组件,构造方法多样,有无参构造、String参数构造、Icon参数构造、String+Icon参数构造、String+Icon+boolean参数构造。 -
JRadioButton
JRadioButton是一个单选框组件,构造方法多样,有无参构造、String参数构造、Icon参数构造、String+Icon参数构造、String+Icon+boolean参数构造。
JRadioButton要实现单选功能,则必须要将其组件放在ButtonGroup组中; -
事件监听
对于JCheckBox和JRadioButton组件,若要实现事件监听,则前者可通过实现ItemListener接口来实现,后者可通过ActionListener接口来实现。两者分别在itemStateChanged()和actionPerformed()方法中完成相应操作。 -
主要方法
(1)getStateChange()方法,来判断该组件是否被选中;
(2)getItem()方法,获取产生事件的对象。通常在itemStateChanged()中通过e.getItem()并结合强制转换来使用。
二、源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class demo extends JFrame implements ItemListener, ActionListener {
JTextField textfield1 = new JTextField();
JTextField textfield2 = new JTextField();
demo() {
setTitle("This is a demo");
setSize(500, 350);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setLayout(null);
setLocation(420, 200);
setResizable(false);//窗体大小不可改变
JCheckBox checkbox1 = new JCheckBox("Java");
JCheckBox checkbox2 = new JCheckBox("C/C++");
JCheckBox checkbox3 = new JCheckBox("Python");
JCheckBox checkbox4 = new JCheckBox("JavaScript");
JCheckBox checkbox5 = new JCheckBox("PHP");
JRadioButton rt1 = new JRadioButton("武侠小说");
JRadioButton rt2 = new JRadioButton("都市小说");
JRadioButton rt3 = new JRadioButton("修仙小说");
JRadioButton rt4 = new JRadioButton("言情小说");
JRadioButton rt5 = new JRadioButton("恐怖小说");
Icon icon = new ImageIcon("D:/WPSMind/icon.png");
Icon icons = new ImageIcon("D:/WPSMind/02.png");
JLabel label = new JLabel("复选框", icon, SwingConstants.LEFT);
JLabel labels = new JLabel("单选框", icons, SwingConstants.LEFT);
//复选框
add(label);
label.setBounds(20, 0, 100, 50);
add(checkbox1);
add(checkbox2);
add(checkbox3);
add(checkbox4);
add(checkbox5);
add(textfield1);
textfield1.setEditable(false);
checkbox1.setBounds(53, 60, 100, 20);
checkbox2.setBounds(153, 60, 100, 20);
checkbox3.setBounds(253, 60, 100, 20);
checkbox4.setBounds(353, 60, 100, 20);
checkbox5.setBounds(53, 100, 100, 20);
textfield1.setBounds(157, 100, 279, 20);
//复选框添加监听
checkbox1.addItemListener(this);
checkbox2.addItemListener(this);
checkbox3.addItemListener(this);
checkbox4.addItemListener(this);
checkbox5.addItemListener(this);
//单选框
add(labels);
labels.setBounds(20, 130, 100, 50);
add(rt1);
add(rt2);
add(rt3);
add(rt4);
add(rt5);
add(textfield2);
textfield2.setEditable(false);
rt1.setBounds(53, 190, 100, 20);
rt2.setBounds(153, 190, 100, 20);
rt3.setBounds(253, 190, 100, 20);
rt4.setBounds(353, 190, 100, 20);
rt5.setBounds(53, 230, 100, 20);
textfield2.setBounds(157, 230, 279, 20);
//将JRadioButton组件装入ButtonGroup组中
ButtonGroup group = new ButtonGroup();
group.add(rt1);
group.add(rt2);
group.add(rt3);
group.add(rt4);
group.add(rt5);
//单选框实现监听
rt1.addActionListener(this);
rt2.addActionListener(this);
rt3.addActionListener(this);
rt4.addActionListener(this);
rt5.addActionListener(this);
//设置组件可见
validate();
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(e.getStateChange() == e.SELECTED) {
JCheckBox jcb = (JCheckBox) e.getItem();
textfield1.setText("你当前选的是:" + jcb.getText());
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textfield2.setText("你当前选的是:" + e.getActionCommand());
}
}
public class JStudying {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* String str = "we will not use 'hello world'!"; System.out.println(str);
*/
demo de = new demo();
}
}
四、运行结果
上一篇: 第十章 接口
下一篇: java的Swing组件模拟qq登录界面