热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

java选择框、单选框和单选按钮

本文给大家介绍的是java中选择框、单选框和单选按钮的操作方法,十分的简单实用,有需要的小伙伴可以参考下。

选择框、单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(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个选择框组成的购买产品数量选择框组,当选择了购买数量后,在另一个文本框显示每台价格。

 import java.applet.*;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 class Panel1 extends JPanel{
   JRadioButton box1,box2,box3;
   ButtonGroup g;
   Panel1(){
     setLayout(new GridLayout(1,3));
     g = new ButtonGroup();
     box1 = new JRadioButton(MyWindow.fName[0]+"计算机",false);
     box2 = new JRadioButton(MyWindow.fName[1]+"计算机",false);
     box3 = new JRadioButton(MyWindow.fName[2]+"计算机",false);
     g.add(box1);g.add(box2);g.add(box3);
     add(box1);add(box2);add(box3);
     add(new JLabel("计算机3选1") );
   }
 }
 class Panel2 extends JPanel{
   JCheckBox box1,box2,box3;
   ButtonGroup g;
   Panel2(){
     setLayout(new GridLayout(1,3));
     g = new ButtonGroup();
     box1 = new JCheckBox("购买1台 ");
     box2 = new JCheckBox("购买2台 ");
     box3 = new JCheckBox("购买3台 ");
     g.add(box1);g.add(box2);g.add(box3);
     add(box1);add(box2);add(box3);
     add(new JLabel(" 选择1、2或3"));
   }
 }
 class MyWindow extends JFrame implements ItemListener{
   Panel1 panel1;
   Panel2 panel2;
   JLabel label1,label2;
   JTextArea text1,text2;
   static String fName[] = {"HP","IBM","DELL"};
   static double priTbl[][]={{1.20,1.15,1.10},{1.70,1.65,1.60},{1.65,1.60,1.58}};
   static int productin = -1;
   MyWindow(String s){
     super(s);
     Container con = this.getContentPane();
     con.setLayout(new GridLayout(3,2));
     this.setLocation(100,100);
     this.setSize(400,100);
     panel1 = new Panel1();panel2 = new Panel2();
     label1 = new JLabel("产品介绍",JLabel.CENTER);
     label2 = new JLabel("产品价格",JLabel.CENTER);
     text1 = new JTextArea();text2 = new JTextArea();
     con.add(label1);con.add(label2);con.add(panel1);
     con.add(panel2);con.add(text1);con.add(text2);
     panel1.box1.addItemListener(this);
     panel1.box2.addItemListener(this);
     panel1.box3.addItemListener(this);
     panel2.box1.addItemListener(this);
     panel2.box2.addItemListener(this);
     panel2.box3.addItemListener(this);
     this.setVisible(true);this.pack();
   }
   public void itemStateChanged(ItemEvent e){ //选项状态已改变
     if(e.getItemSelectable()==panel1.box1){ //获取可选项
       production =0;
       text1.setText(fName[0]+"公司生产");text2.setText("");
     }
     else if(e.getItemSelectable()==panel1.box2){
       production =1;
       text1.setText(fName[1]+"公司生产");text2.setText("");
     }
     else if(e.getItemSelectable()==panel1.box3){
       production =2;
       text1.setText(fName[2]+"公司生产");text2.setText("");
     }
     else{
       if(production ==-1) return;
       if(e.getItemSelectable()==panel2.box1){
         text2.setText(""+priTbl[production][0]+"万元/台");
       }
       else if(e.getItemSelectable()==panel2.box2){
         text2.setText(""+priTbl[production][1]+"万元/台");
       }
       else if(e.getItemSelectable()==panel2.box3){
         text2.setText(""+priTbl[production][2]+"万元/台");
       }
     }
   }
 }
 public class Example6_2 extends Applet{
   MyWindow myWin = new MyWindow("选择项目处理示例程序");
 }

以上所述就是本文的全部内容了,希望大家能够喜欢。


推荐阅读
  • docker增加restart=always, docker重启后自动启动容器的方法
    本文介绍了在运行docker容器时如何添加参数来保证每次docker服务重启后容器也自动重启的方法,以及如何使用命令来更新已启动的容器。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在Docker容器技术中限制容器对CPU的使用的方法,包括使用-c参数设置容器的内存限额,以及通过设置工作线程数量来充分利用CPU资源。同时,还介绍了容器权重分配的情况,以及如何通过top命令查看容器在CPU资源紧张情况下的使用情况。 ... [详细]
  • 集合的遍历方式及其局限性
    本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 开发笔记:Docker 上安装启动 MySQL
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker上安装启动MySQL相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Java的公式汇总及相关知识,包括定义变量的语法格式、类型转换公式、三元表达式、定义新的实例的格式、引用类型的方法以及数组静态初始化等内容。希望对读者有一定的参考价值。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了Python函数的定义与调用的方法,以及函数的作用,包括增强代码的可读性和重用性。文章详细解释了函数的定义与调用的语法和规则,以及函数的参数和返回值的用法。同时,还介绍了函数返回值的多种情况和多个值的返回方式。通过学习本文,读者可以更好地理解和使用Python函数,提高代码的可读性和重用性。 ... [详细]
author-avatar
落地有声800_491_431
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有