Java学习——65.JRadioButton
Swing中的按钮组件包括JButton、JRadioButton、JCheckbox,它们都是抽象按钮类AbstractButton类的子类。
今天介绍单选按钮JRadioButton。
1、单选按钮类声明
单选按钮实现单项选择,即一组单选按钮是互斥的,一次只能选择一个。其类声明如下:
public class JRadioButton extends JToggleButton implements Accessible
{
public JRadioButton (String text)
public JRadioButton (String text, boolean selected)
public JRadioButton (String text, Icon icon,
boolean selected) //icon指定图标
}
2、按钮组ButtonGroup
多个单选按钮放在同一组中,才会互斥。按钮组ButtonGroup类声明如下:
public class ButtonGroup implements Serializable //按钮组类
{
public ButtonGroup()
public void add(AbstractButton button) //添加按钮
public void remove(AbstractButton button)
}
3、AbstractButton抽象按钮类
此类定义按钮和菜单项的一般行为,单选按钮JRadioButton也继承自该类,声明如下:
public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants
{
public String getText()//获得按钮标题
public void setText(String text) //设置按钮标题
public boolean isSelected()//返回是否选中
public void setSelected(boolean selected)//设置选中状态
public void addActionListener(ActionListener listener) //注册动作事件监听器
public void removeActionListener(ActionListener listern)// 取消动作事件监听器
}
4、简单例题
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class JRadioButtonlearn extends JFrame implements ActionListener{
private JRadioButton xb[];
private JRadioButton sf[];
private JTextField text1,text2;
public JRadioButtonlearn(){
super("单选按钮");
this.setBounds(200,200,300,150);
this.setVisible(true);
JPanel panel=new JPanel();
panel.add(new JLabel("性别:"));
ButtonGroup b1=new ButtonGroup();
Strings1[]={"男","女"};
xb=new JRadioButton[s1.length];
for(int i=0;i<s1.length;i++){
xb[i]=new JRadioButton(s1[i]);
panel.add(xb[i]);
xb[i].addActionListener(this);
b1.add(xb[i]);
}
this.getContentPane().add(panel,"North");
JPanel panel2=new JPanel();
panel2.add(new JLabel("身份:"));
ButtonGroup b2=new ButtonGroup();
Strings2[]={"学生","教师","公务员","工人"};
sf=new JRadioButton[s2.length];
for(int i=0;i<s2.length;i++){
sf[i]=new JRadioButton(s2[i]);
panel2.add(sf[i]);
sf[i].addActionListener(this);
b2.add(sf[i]);
}
this.getContentPane().add(panel2);
JPanel panel3=new JPanel();
panel3.setLayout(new GridLayout(2,1));
text1=new JTextField(30);
text1.setEditable(false);
text2=new JTextField(30);
text2.setEditable(false);
panel3.add(text1);
panel3.add(text2);
this.getContentPane().add(panel3,"South");
}
public void actionPerformed(ActionEvent e){
if(xb[0].isSelected())
text1.setText("您的性别为:男");
if(xb[1].isSelected())
text1.setText("您的性别为:女");
for(int i=0;i<sf.length;i++){
if(sf[i].isSelected())
text2.setText("您的身份为:"+sf[i].getText());
}
}
public static void main(String args[]){
new JRadioButtonlearn();
}
}
其运行结果如下:
选择性别组,在文本行输出性别;选择身份,在文本行输出身份。
但是性别中:男和女只能选择一个,身份中也只能选择一个。
不管选中哪一个单选按钮,都会触发事件,在相应的文本行中输出。