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();

}

}

其运行结果如下:

选择性别组,在文本行输出性别;选择身份,在文本行输出身份。

但是性别中:男和女只能选择一个,身份中也只能选择一个。

不管选中哪一个单选按钮,都会触发事件,在相应的文本行中输出。

(0)

相关推荐