祝您考试顺利通过,更多考试资料可以访问计算机等级考试网考试吧:一个神奇的考试网站。8.4选择组件经过上节的学习,我们知道了如何利用文本输入组件获取用户输入的文本,但是,在很多情况下,用户可能更倾向于你给他一些选择,而不是让他自己输入这些信息。Java中提供了这样的组件,可以使用户不需输入文字而与GUI界面进行交互。8.4.1JCheckBox复选框JCheckBox是从JToggleButton类中派生出来的,具有两种状态,通常用于显示文本,并有一个指示是否被选中的方形按钮。JCheckBox的构造方法较多,详见下表8-7。表8-7JCheckBox构造方法构造方法说明JCheckBox()创建一个没有文本、没有图标并且最初未被选定的复选框JCheckBox(Iconicon)创建有一个图标、最初未被选定的复选框JCheckBox(Iconicon,booleanselected)创建一个带图标的复选框,并指定其最初是否处于选定状态WwW.kao8.CcJCheckBox(Stringtext)创建一个带文本的、最初未被选定的复选框JCheckBox(Stringtext,booleanselected)创建一个带文本的复选框,并指定其最初是否处于选定状态JCheckBox(Stringtext,Iconicon)创建带有指定文本和图标的、最初未选定的复选框JCheckBox(Stringtext,Iconicon,booleanselected)创建一个带文本和图标的复选框,并指定其最初是否处于选定状态构造方法中各参数意义text-复选框的文本icon-要显示的Icon图像selected-指示最初选择状态的boolean值。如果该参数为true,则复选框被选定当JCheckBox被选中或取消选中时,会触发一个事件,该事件就是ActionEvent,如果想根据JCheckBox的选中情况进行不同处理,可以编写实现ActionListener接口的类进行处理。8.4.2JRadioButton单选按钮单选按钮JRadioButton与复选按钮JCheckBox几乎是相同的,都是从JToggleButton类中派生出来的,都具有两种状态,主要用于显示文本。JRadioButton有一个指示是否被选中的圆形按钮。不同之处在于单选按钮机会总是用于显示一组互相排斥的选项(如某人的性别,男、女只能选择一项),所以,JRadioButton通常位于一个ButtonGroup按钮组中,不在按钮组中的JRadioButton也就失去了JRadioButton的意义。在同一个ButtonGroup按钮组种的单选按钮,任何时刻最多有一个单选按钮被选中,因此,如果我们创建的多个单选按钮其初始状态都是选中状态,则最先加入ButtonGroup按钮组的单选按钮的选中状态被保留,其后加入到ButtonGroup按钮组中的其他单选按钮的选中状态被取消。选中状态的保留与加入到ButtonGroup中的次序有关,与加入到其要显示的父容器顺序无关。如下代码中ContainercontentPane=this.getContentPane();JRadioButtonr1=newJRadioButton(a,true);JRadioButtonr2=newJRadioButton(b,true);JRadioButtonr3=newJRadioButton(c,true);ButtonGroupbutton=newButtonGroup();button.add(r3);祝您考试顺利通过,更多考试资料可以访问计算机等级考试网考试吧:一个神奇的考试网站。button.add(r2);button.add(r1);contentPane.setLayout(newFlowLayout());contentPane.add(r2);contentPane.add(r1);contentPane.add(r3);加入ButtonGroup中的JRadioButton的顺序为r3,r2,r1,而加入contentPane中的书序则为r2,r1,r2,这时候其运行效果如下:可见其状态选中是根据加入ButtonGroup中的顺序决定的JRadioButton提供了与JCheckBox完全相似的构造方法。见下表8-8表8-8JRadioButton构造方法构造方法说明JRadioButton()创建一个初始化为未选择的单选按钮,其文本未设定JRadioButton(Iconicon)创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本JRadioButton(Iconicon,booleanselected)创建一个具有指定图像和选择状态的单选按钮,但无文本JRadioButton(Stringtext)创建一个具有指定文本的状态为未选择的单选按钮JRadioButton(Stringtext,booleanselected)创建一个具有指定的文本和图像并初始化为未选择的单选按钮JRadioButton(Stringtext,Iconicon)创建一个具有指定的文本和图像并初始化为未选择的单选按钮JRadioButton(Stringtext,Iconicon,booleanselected)创建一个具有指定的文本、图像和选择状态的单选按钮构造方法中各参数意义text-此单选按钮上显示的字符串icon-此按钮应显示的图像selected-指示最初选择状态的boolean值。如果该参数为true,则单选框被选定当JRadioButton被选中或取消选中时,会触发一个事件,该事件就是ActionEvent,如果想根据JRadioButton的选中情况进行不同处理,可以编写实现ActionListener接口的类进行处理。例8-5中在JFrame添加了两个JRadioButton及三个JCheckBox,验证我们所学的部分知识。[例8-5]importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classJCheckBoxAndJRadioButtonTestextendsJFrame{privateJPanelpanelNorth=newJPanel();privateJLabellabel1=newJLabel(性别);privateJRadioButtonrb1=newJRadioButton(男,true);privateJRadioButtonrb2=newJRadioButton(女);祝您考试顺利通过,更多考试资料可以访问计算机等级考试网考试吧:一个神奇的考试网站。privateButtonGroupgroup=newButtonGroup();privateJLabellabel2=newJLabel(擅长);privateJCheckBoxcb1=newJCheckBox(书法);privateJCheckBoxcb2=newJCheckBox(唱歌);privateJCheckBoxcb3=newJCheckBox(跳舞);privateJButtonbutton=newJButton(确定);privateJTextAreata=newJTextArea(6,10);publicJCheckBoxAndJRadioButtonTest(Stringtitle){super(title);ContainercontentPane=this.getContentPane();[page]//添加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(newMyActionListener());this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}privateclassMyActionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){Stringsex=;//记录性别StringBufferstrBuf=newStringBuffer();//记录擅长//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()++ta.getText());}}}publicclassTest8_5{publicstaticvoidmain(String[]args){newJCheckBoxAndJRadioButtonTest(单选复选按钮测试);}}运行结果如图8-6所示图8-6例8-5多次按下确定按钮的运行结果例8-5中我们并没有监测JRadioButton和JCheckBox,实际上我们设计类来监测其ActionEvent,同样可以达到本例题的效果,有兴趣的读者可以修改例8-5中事件处理部分来监测两个JRadioButton和三个JCheckBox。8.4.3JComboBox下拉列表JComboBox组件也称为下拉列表框,其特点是将所有选项折叠在一起,只显示最前面的或被用户选中的一个。选择时需要单击下拉列表右边的下三角按钮,这时候会弹出包含所有选项的列表。用户可以在列表中进行选择,也可以根据需要直接输入所要的选项。也可以输入选项中没有的内容。JcomboBox类提供了多个构造方法用于创建JcomboBox类对象,详见下表8-9。表8-9JComboBox构造方法构造方法说明JComboBox()创建一个空的JcomboBox对象,可使用addItem方法添加选项JComboBox(ComboBoxModelaModel)创建一个JComboBox,其项取自现有的ComboBoxModelJComboBox(Object[]items)创建包含指定数组中的元素的JComboBoxJComboBox(Vectoritems)创建包含指定Vector中的元素的JComboBox祝您考试顺利通过,更多考试资料可以访问计算机等级考试网考试吧:一个神奇的考试网站。我们可以利用上表给出的四个方法中的任意一个来创建JCom