当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级Java选择组件学习教程(1)
发布时间:2011/12/29 16:57:17 来源:城市学习网 编辑:ziteng

8.4 选择组件

  经过上节的学习,我们知道了如何利用文本输入组件获取用户输入的文本,但是,在很多情况下,用户可能更倾向于你给他一些选择,而不是让他自己输入这些信息。Java中提供了这样的组件,可以使用户不需输入文字而与GUI界面进行交互。

  8.4.1 JCheckBox 复选框

  JCheckBox是从JToggleButton类中派生出来的,具有两种状态,通常用于显示文本,并有一个指示是否被选中的方形按钮。

  JCheckBox的构造方法较多,详见下表8-7。

表8-7 JCheckBox构造方法

构造方法

说明

JCheckBox()

创建一个没有文本、没有图标并且最初未被选定的复选框

JCheckBox(Icon icon)

创建有一个图标、最初未被选定的复选框

JCheckBox(Icon icon,

boolean selected)

创建一个带图标的复选框,并指定其最初是否处于选定状态

JCheckBox(String text)

创建一个带文本的、最初未被选定的复选框

JCheckBox(String text,

boolean selected)

创建一个带文本的复选框,并指定其最初是否处于选定状态

JCheckBox(String text,

Icon icon)

创建带有指定文本和图标的、最初未选定的复选框

JCheckBox(String text,
Icon icon,boolean selected)

创建一个带文本和图标的复选框,并指定其最初是否处于选定状态

  构造方法中各参数意义

  text - 复选框的文本

  icon - 要显示的 Icon 图像

  selected - 指示最初选择状态的 boolean 值。如果该参数为 true,则复选框被选定

  当JCheckBox被选中或取消选中时,会触发一个事件,该事件就是ActionEvent,如果想根据JCheckBox的选中情况进行不同处理,可以编写实现ActionListener接口的类进行处理。

  8.4.2 JRadioButton单选按钮

  单选按钮JRadioButton与复选按钮JCheckBox几乎是相同的,都是从JToggleButton类中派生出来的,都具有两种状态,主要用于显示文本。JRadioButton有一个指示是否被选中的圆形按钮。不同之处在于单选按钮机会总是用于显示一组互相排斥的选项(如某人的性别,男、女只能选择一项),所以,JRadioButton通常位于一个ButtonGroup按钮组中,不在按钮组中的JRadioButton也就失去了JRadioButton的意义。

  在同一个ButtonGroup按钮组种的单选按钮,任何时刻最多有一个单选按钮被选中,因此,如果我们创建的多个单选按钮其初始状态都是选中状态,则最先加入ButtonGroup按钮组的单选按钮的选中状态被保留,其后加入到ButtonGroup按钮组中的其他单选按钮的选中状态被取消。选中状态的保留与加入到ButtonGroup中的次序有关,与加入到其要显示的父容器顺序无关。

  如下代码中

  Container contentPane = this.getContentPane();

  JRadioButton r1 = new JRadioButton("a",true);

  JRadioButton r2 = new JRadioButton("b",true);

  JRadioButton r3 = new JRadioButton("c",true);

  ButtonGroup button = new ButtonGroup();

  button.add(r3);

  button.add(r2);

  button.add(r1);

  contentPane.setLayout(new FlowLayout());

  contentPane.add(r2);

  contentPane.add(r1);

  contentPane.add(r3);

  加入ButtonGroup中的JRadioButton的顺序为r3,r2,r1,而加入contentPane中的书序则为r2,r1,r2,这时候其运行效果如下:

  可见其状态选中是根据加入ButtonGroup中的顺序决定的

  JRadioButton提供了与JCheckBox完全相似的构造方法。见下表8-8

表8-8  JRadioButton构造方法

构造方法

说明

JRadioButton()

创建一个初始化为未选择的单选按钮,其文本未设定

JRadioButton(Icon icon)

创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本

JRadioButton(Icon icon,                    boolean selected)

创建一个具有指定图像和选择状态的单选按钮,但无文本

JRadioButton(String text)

创建一个具有指定文本的状态为未选择的单选按钮

JRadioButton(String text,                    boolean selected)

创建一个具有指定的文本和图像并初始化为未选择的单选按钮

JRadioButton(String text,

Icon icon)

创建一个具有指定的文本和图像并初始化为未选择的单选按钮

JRadioButton(String text,                    Icon icon,boolean selected) 

创建一个具有指定的文本、图像和选择状态的单选按钮

构造方法中各参数意义

  text -此单选按钮上显示的字符串

  icon -此按钮应显示的图像

  selected - 指示最初选择状态的 boolean 值。如果该参数为 true,则单选框被选定

  当JRadioButton被选中或取消选中时,会触发一个事件,该事件就是ActionEvent,如果想根据JRadioButton的选中情况进行不同处理,可以编写实现ActionListener接口的类进行处理。

  例8-5 中在JFrame添加了两个JRadioButton及三个JCheckBox,验证我们所学的部分知识。

  [例 8-5]

  import java.awt.*;

  import javax.swing.*;

  import java.awt.event.*;

  class JCheckBoxAndJRadioButtonTest extends JFrame{

  private JPanel panelNorth = new JPanel();

  private JLabel label1 = new JLabel("性别");

  private JRadioButton rb1 = new JRadioButton("男",true);

  private JRadioButton rb2 = new JRadioButton("女");

  private ButtonGroup group = new ButtonGroup();

  private JLabel label2 = new JLabel("擅长");

  private JCheckBox cb1= new JCheckBox("书法");

  private JCheckBox cb2= new JCheckBox("唱歌");

  private JCheckBox cb3= new JCheckBox("跳舞");

  private JButton button = new JButton("确定");

  private JTextArea ta = new JTextArea(6,10);

  public JCheckBoxAndJRadioButtonTest(String title){

  super(title);

  Container contentPane = this.getContentPane();  [NextPage]

  //添加JRadioButton到ButtonGroup中

  group.add(rb1);

  group.add(rb2);

  panelNorth.add(label1);

  panelNorth.add(rb1);

  panelNorth.add(rb2);

  panelNorth.add(label2);

  panelNorth.add(cb1);

  panelNorth.add(cb2);

  panelNorth.add(cb3);

  panelNorth.add(button);

  contentPane.add(panelNorth,BorderLayout.NORTH);

  contentPane.add(ta,BorderLayout.CENTER);

  pack();

  //监听button的Action事件

  button.addActionListener(new MyActionListener());

  this.setVisible(true);

  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  }

  private class MyActionListener implements ActionListener{

  public void actionPerformed(ActionEvent e) {

  String sex="";//记录性别

  StringBuffer strBuf=new StringBuffer();//记录擅长

  //isSelected表示控件被选中

  if(rb1.isSelected()){

  sex="男";

  }

  if(rb2.isSelected()){

  sex="女";

  }

  if(cb1.isSelected()){

  strBuf.append("书法 ");

  }

  if(cb2.isSelected()){

  strBuf.append("唱歌 ");

  }

  if(cb3.isSelected()){

  strBuf.append("跳舞 ");

  }

  ta.setText("您的性别:"+sex+"\t擅长:"+strBuf.toString()+"\n"+ta.getText());

  }

  }

  }

  public class Test8_5{

  public static void main(String[] args) {

  new JCheckBoxAndJRadioButtonTest("单选复选按钮测试");

  }

  }

  运行结果如图8-6所示

图8-6 例8-5多次按下确定按钮的运行结果

  例8-5中我们并没有监测JRadioButton和JCheckBox,实际上我们设计类来监测其ActionEvent,同样可以达到本例题的效果,有兴趣的读者可以修改例8-5中事件处理部分来监测两个JRadioButton和三个JCheckBox。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved