Java知多少(87)选择框和单选按钮

选择框、单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择。

选择框

选择框(JCheckBox)的选中与否开状是一个小方框,被选中则在框中打勾。当在一个容器中有多个选择框,同时可以有多个选择框被选中,这样的选择框也称复选框。与选择框相关的接口是ItemListener,事件类是ItemEvent。

JCheckBox类常用的构造方法有以下3个:

  1. JCheckBox():用空标题构造选择框。
  2. JCheckBox(String s):用给定的标题s构造选择框。
  3. JCheckBox(String s, boolean b):用给定的标题s构造选择框,参数b设置选中与否的初始状态。

JCheckBox类的其他常用方法如下:

  1. getState():获取选择框的状态。
  2. setState(boolean b):设置选择框的状态
  3. getLabel():获取选择框的标题。
  4. setLabel(String s):设置选择框的标题。
  5. isSelected():获取选择框是否被选中的状态。
  6. itemStateChanged(ItemEvent e):处理选择框事件的接口方法。
  7. getItemSelectable():获取可选项,获取事件源。
  8. addItemListener(ItemListener l):为选择框设定监视器。
  9. removeItemListener(ItemListener l):移去选择框的监视器。

【例 11-11】声明一个面板子类,面板子类对象有3个选择框。

class Panel1 extends JPanel{
    JCheckBox box1,box2,box3;
    Panel1(){
        box1 = new JCheckBox(“足球”);
        box2 = new JCheckBox(“排球”);
        box2 = new JCheckBox(“篮球”);
    }
}

单选框

当在一个容器中放入多个选择框,且没有ButtonGroup对象将它们分组,则可以同时选中多个选择框。如果使用ButtonGroup对象将选择框分组,同一时刻组内的多个选择框只允许有一个被选中,称同一组内的选择框为单选框。单选框分组的方法是先创建ButtonGroup对象,然后将希望为同组的选择框添加到同一个ButtonGroup对象中。参见例6.2程序的面板子类Panel2的声明,组内有3个单选框。

单选按钮

单选按钮(JRadioButton)的功能与单选框相似。使用单选按钮的方法是将一些单选按钮用ButtonGroup对象分组,使同一组的单选按钮只允许有一个被选中。单选按钮与单选框的差异是显示的样式不同,单选按钮是一个圆形的按钮,单选框是一个小方框。

JRadioButton类的常用构造方法有以下几个:

  1. JRadioButton():用空标题构造单选按钮。
  2. JRadioButton(String s):用给定的标题s构造单选按钮。
  3. JRadioButton(String s,boolean b):用给定的标题s构造单选按钮,参数b设置选中与否的初始状态。

单选按钮使用时需要使用ButtonGroup将单选按钮分组,单选按钮的分组方法是先创建对象,然后将同组的单选按钮添加到同一个ButtonGroup对象中。参见例6.2程序的子类panel1的声明,组内有3个单选按钮。

选择项目事件处理

用户对选择框或单选按钮做出选择后,程序应对这个选择作出必要的响应,程序为此要处理选择项目事件。选择项目处理程序的基本内容有:

  1. 监视选择项目对象的类要实现接口ItemListener,
  2. 程序要声明和建立选择对象,
  3. 为选择对象注册监视器,
  4. 编写处理选择项目事件的接口方法itemStateChanged(ItemEvent e),在该方法内用getItemSelectable()方法获取事件源,并作相应处理。

【例 11-12】处理选择项目事件的小应用程序。一个由3个单选按钮组成的产品选择组,当选中某个产品时,文本区将显示该产品的信息。一个由3个选择框组成的购买产品数量选择框组,当选择了购买数量后,在另一个文本框显示每台价格。

 1 import java.applet.*;
 2 import javax.swing.*;
 3 import java.awt.*;
 4 import java.awt.event.*;
 5 class Panel1 extends JPanel{
 6     JRadioButton box1,box2,box3;
 7     ButtonGroup g;
 8     Panel1(){
 9         setLayout(new GridLayout(1,3));
10         g = new ButtonGroup();
11         box1 = new JRadioButton(MyWindow.fName[0]+"计算机",false);
12         box2 = new JRadioButton(MyWindow.fName[1]+"计算机",false);
13         box3 = new JRadioButton(MyWindow.fName[2]+"计算机",false);
14         g.add(box1);g.add(box2);g.add(box3);
15         add(box1);add(box2);add(box3);
16         add(new JLabel("计算机3选1") );
17     }
18 }
19 class Panel2 extends JPanel{
20     JCheckBox box1,box2,box3;
21     ButtonGroup g;
22     Panel2(){
23         setLayout(new GridLayout(1,3));
24         g = new ButtonGroup();
25         box1 = new JCheckBox("购买1台 ");
26         box2 = new JCheckBox("购买2台 ");
27         box3 = new JCheckBox("购买3台 ");
28         g.add(box1);g.add(box2);g.add(box3);
29         add(box1);add(box2);add(box3);
30         add(new JLabel(" 选择1、2或3"));
31     }
32 }
33 class MyWindow extends JFrame implements ItemListener{
34     Panel1 panel1;
35     Panel2 panel2;
36     JLabel label1,label2;
37     JTextArea text1,text2;
38     static String fName[] = {"HP","IBM","DELL"};
39     static double priTbl[][]={{1.20,1.15,1.10},{1.70,1.65,1.60},{1.65,1.60,1.58}};
40     static int productin = -1;
41     MyWindow(String s){
42         super(s);
43         Container con = this.getContentPane();
44         con.setLayout(new GridLayout(3,2));
45         this.setLocation(100,100);
46         this.setSize(400,100);
47         panel1 = new Panel1();panel2 = new Panel2();
48         label1 = new JLabel("产品介绍",JLabel.CENTER);
49         label2 = new JLabel("产品价格",JLabel.CENTER);
50         text1 = new JTextArea();text2 = new JTextArea();
51         con.add(label1);con.add(label2);con.add(panel1);
52         con.add(panel2);con.add(text1);con.add(text2);
53         panel1.box1.addItemListener(this);
54         panel1.box2.addItemListener(this);
55         panel1.box3.addItemListener(this);
56         panel2.box1.addItemListener(this);
57         panel2.box2.addItemListener(this);
58         panel2.box3.addItemListener(this);
59         this.setVisible(true);this.pack();
60     }
61     public void itemStateChanged(ItemEvent e){  //选项状态已改变
62         if(e.getItemSelectable()==panel1.box1){  //获取可选项
63             production =0;
64             text1.setText(fName[0]+"公司生产");text2.setText("");
65         }
66         else if(e.getItemSelectable()==panel1.box2){
67             production =1;
68             text1.setText(fName[1]+"公司生产");text2.setText("");
69         }
70         else if(e.getItemSelectable()==panel1.box3){
71             production =2;
72             text1.setText(fName[2]+"公司生产");text2.setText("");
73         }
74         else{
75             if(production ==-1) return;
76             if(e.getItemSelectable()==panel2.box1){
77                 text2.setText(""+priTbl[production][0]+"万元/台");
78             }
79             else if(e.getItemSelectable()==panel2.box2){
80                 text2.setText(""+priTbl[production][1]+"万元/台");
81             }
82             else if(e.getItemSelectable()==panel2.box3){
83                 text2.setText(""+priTbl[production][2]+"万元/台");
84             }
85         }
86     }
87 }
88 public class Example6_2 extends Applet{
89     MyWindow myWin = new MyWindow("选择项目处理示例程序");
90 }

系列文章:

Java知多少(上)

Java知多少(中)

Java知多少(78)Java向量(Vector)及其应用

Java知多少(79)哈希表及其应用

Java知多少(80)图形界面设计基础

Java知多少(81)框架窗口基础

Java知多少(82)标签、按钮和按钮事件简介

Java知多少(83)面板基础:JPanel和JScrollPane

Java知多少(84)图形界面之布局设计

Java知多少(85)文本框和文本区

Java知多少(86)文本框和文本区的输入输出

时间: 2024-10-21 08:15:25

Java知多少(87)选择框和单选按钮的相关文章

Java知多少(87)选择框和单选按钮(转)

选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(JCheckBox)的选中与否开状是一个小方框,被选中则在框中打勾.当在一个容器中有多个选择框,同时可以有多个选择框被选中,这样的选择框也称复选框.与选择框相关的接口是ItemListener,事件类是ItemEvent.JCheckBox类常用的构造方法有以下3个: JCheckBox():用空标题

Java知多少(89)列表和组合框

有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个项目. 在下拉式菜单或弹出式菜单中选择一个选项就产生一个ActionEvent事件.该事件被发送给那个选项的监视器,事件的意义由监视器解释. 菜单条.菜单和菜单项 下拉式菜单通过出现在菜单条上的名字可视化表示,菜单条(JMenuBar)通常出现在JFrame的顶部,一个菜单条显示多个下拉式菜单的名字

Java知多少(88)列表和组合框

列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择. 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象.程序可以在列表框中加入多个文本选择项条目.列表事件的事件源有两种: 一是鼠标双击某个选项:双击选项是动作事件,与该事件相关的接口是ActionListener,注册监视器的方法是addActionListener(),接口方法是actionPerformed(ActionEvent e). 二是鼠标单击某个选项:单击选项是选项

Java知多少(完结篇)

Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java开发环境的搭建 Java知多少(6)第一个程序示例 Java知多少(7)类与对象 Java知多少(8)类库及其组织结构 Java知多少(9) import及Java类的搜索路径 Java知多少(10)数据类型及变量 Java知多少(11)数据类型转换 Java知多少(12)运算符 Java知多少(1

Java知多少(110)数据库之插入记录

插入数据表记录有3种方案 一.使用Statement对象 实现插入数据表记录的SQL语句的语法是: insert into 表名(字段名1,字段名2,……)value (字段值1,字段值2,……) 例如: insert into ksInfo(考号,姓名,成绩,地址,简历)value(‘200701’,’张大卫’534,’上海欧阳路218弄4-1202’,’’) 实现同样功能的Java程序代码是: sql = “insert intoksIno(考号,姓名,成绩,地址,简历)”; sql= =

Java知多少(97)框架窗口基础

窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这个窗口,当应用程序程序启动时,由系统创建和处理: 框架窗口(JFrame):这是通常意义上的窗口,它支持窗口周边的框架.标题栏,以及最小化.最大化和关闭按钮: 一种无边框窗口(JWindow):没有标题栏,没有框架,只是一个空的矩形. 用Swing中的JFrame类或它的子类创建的对象就是JFram

Java知多少(104)网络编程之统一资源定位符URL

统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址.超文本链路由统一资源定位符URL维持.URL的格式是: <METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE> 其中:Method是传输协议:HOSTNAME是文档和服务器所在的Internet主机名(域名系统中DNS中的点地址);PORT是服务端口号(可省略):PATH是路径名,FILE是文件名.例

Java知多少(96)绘图之设置字型和颜色

Java绘图中,显示文字的方法主要有三种:(1)drawString(String str,int x,int y):在指定的位置显示字符串.(2)drawChars(char data[],int offset,int length, int x, int y):在指定的位置显示字符数组中的文字,从字符数组的offset位置开始,最多显示length个字符.(3)drawBytes(byte data[],int offset,int length,int x,int y), 在指定的位置显示

Java知多少(90)菜单

有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个项目. 在下拉式菜单或弹出式菜单中选择一个选项就产生一个ActionEvent事件.该事件被发送给那个选项的监视器,事件的意义由监视器解释. 菜单条.菜单和菜单项 下拉式菜单通过出现在菜单条上的名字可视化表示,菜单条(JMenuBar)通常出现在JFrame的顶部,一个菜单条显示多个下拉式菜单的名字