文档章节

小博老师解析Java核心技术 ——JSwing选择型控件

博为峰教研组
 博为峰教研组
发布于 2016/12/21 11:07
字数 1168
阅读 32
收藏 1

[引言]

我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的各类控件,今天主要讲解的是各类选择型控件。

[步骤阅读一]单选按钮控件JRadioButton

之前我们学习了JSwing中的文本类型控件,可以让用户自由输入文本信息,但是有的时候,我们需要让用户提供的信息,并不是随意输入的,而是有一定的范围让用户选择,比如用户的性别、兴趣爱好、所在城市等等场景,此时文本类型控件就有点无法满足我们的需求了,因此我们需要借助选择型控件。

首先我们来了解单选按钮控件JRadioButton,它的特点是可以提供多个选项,让用户在多个选项中选择一项,需要注意的是,用户只能选择其中的一个选项,如果用户修改了选项,之前的选项则会取消选中,这个效果我们一般称为互斥效果。我们通过一个简单的选择性别效果来体验下单选按钮控件,核心代码如下:

public class ControllerFrame extends JFrame{

public ControllerFrame(){

super("博为峰教育");

setBounds(200, 100, 300, 300);

setLayout(null);

// 实例化 单选按钮 控件

JRadioButton rb1 = new JRadioButton("男");

rb1.setBounds(20, 20, 40, 25);

add(rb1);

JRadioButton rb2 = new JRadioButton("女");

rb2.setBounds(65, 20, 40, 25);

add(rb2);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

实例化窗体并且运行,看到窗体效果如下:


 

但是仅仅这样的话,单选按钮之间是不会出现互斥效果的:

 

用户可以同时选中多个属性,没有互斥效果,这是因为这两个单选按钮控件没有存放在同一个按钮分组中,我们在开发的时候千万要注意,需要出现互斥效果的单选按钮,必须要存放到同一个按钮分组中,在同一个按钮分组中的单选按钮控件,才会出现互斥效果。我们修改代码如下:

public class ControllerFrame extends JFrame{

public ControllerFrame(){

super("博为峰教育");

setBounds(200, 100, 300, 300);

setLayout(null);

// 实例化 单选按钮 控件

JRadioButton rb1 = new JRadioButton("男");

rb1.setBounds(20, 20, 40, 25);

add(rb1);

JRadioButton rb2 = new JRadioButton("女");

rb2.setBounds(65, 20, 40, 25);

add(rb2);

// 创建按钮分组

ButtonGroup group = new ButtonGroup();

// 将单选按钮控件添加到按钮分组中

group.add(rb1);

group.add(rb2);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

此时,单选按钮就会出现互斥效果了:

 

[步骤阅读二]复选框控件JCheckBox

接下来小博老师再带领大家了解复选框控件JCheckBox,它的特点是可以提供多个选项,让用户在多个选项中选择多项,需要注意的是,用户可以选择其中的多个选项。我们通过一个简单的选择学习课程的效果来体验下复选框控件,核心代码如下:

public class ControllerFrame extends JFrame{

public ControllerFrame(){

super("博为峰教育");

setBounds(200, 100, 300, 300);

setLayout(null);

// 实例化 单选按钮 控件

JCheckBox cbx1 = new JCheckBox("全栈Java课程");

cbx1.setBounds(20, 20, 150, 25);

add(cbx1);

JCheckBox cbx2 = new JCheckBox("全栈UI+Web前端课程");

cbx2.setBounds(20, 50, 150, 25);

add(cbx2);

JCheckBox cbx3 = new JCheckBox("全栈iOS课程");

cbx3.setBounds(20, 80, 150, 25);

add(cbx3);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

实例化窗体并且运行,看到窗体效果如下:

 

 

[步骤阅读三]组合框控件JComboBox

接下来小博老师再带领大家了解组合框控件JComboBox,它的特点和单选按钮控件有点类似,可以提供多个选项,让用户在多个选项中选择一项,但是如果提供的选项比较多时,会占用大量界面空间,因此组合框控件提供的选项是隐藏的,用户点击了下拉按钮时,选项才会下拉显示出来,选择完后,选项再次收缩隐藏。我们通过一个简单的选择学习校区的效果来体验下组合框控件,核心代码如下:

public class ControllerFrame extends JFrame{

public ControllerFrame(){

super("博为峰教育");

setBounds(200, 100, 300, 300);

setLayout(null);

// 为组合框控件准备选项

String[] options = new String[]{

"上海漕河泾校区",

"北京回龙观校区",

"深圳华强北校区",

"南京新街口校区",

"成都航空路校区",

};

// 实例化 组合框 控件

JComboBox cbx = new JComboBox(options);

cbx.setBounds(20, 20, 150, 25);

add(cbx);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

实例化窗体并且运行,看到窗体效果如下:

 

© 著作权归作者所有

博为峰教研组
粉丝 52
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
加载中

评论(0)

高手问答第 144 期 — 轻量级数据库中间层 Sharding-JDBC 深度解析

OSCHINA 本期高手问答(2017 年 3 月 7 日 — 3 月 13 日)我们请来了 @terrymanu (张亮) 和大家探讨分布式数据库中间层的适用场景和自研的选型过程。 @terrymanu 张亮,目前是当当架构部负...

局长
2017/03/06
1.4W
68
好程序员大数据视频教程从零基础入门到精通

好程序员大数据视频教程从零基础入门到精通,学习大数据技术的必经之路是什么?是Hadoop吗?当然不是!如果想要踏入大数据的门槛,一个必须的条件就是我们的编程基础。熟练掌握一门编程语言是对大...

好程序员IT
2019/04/03
27
0
小博老师解析Java核心技术 ——JSwing基本菜单制作

[引言] 我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的菜单栏制作,今天主要讲解的菜单栏中...

博为峰教研组
2016/12/22
15
0
运用 Java 8 写一个 通用 Map 转换工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangxin09/article/details/86670936 Map 是非常常见的一个数据结构,至于多常见则不再赘说了。框架无论大小...

sp42a
2019/01/28
0
0
小博老师解析Java核心技术 ——JSwing窗体布局

[引言] 我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示如何实现Java窗体布局,达到美化界面的效果。 [步骤阅...

博为峰教研组
2016/12/15
32
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP一致性hash代码

[TOC] PHP实现一致性hash bash命令 因为下面PHP代码的模拟用户用的是随机数,所以统计结果达不到绝对的均衡. php ./hash.php | sort | uniq -c | sort PHP代码 这是之前学的时候留下来的测试...

我爱吃炒鸡
今天
78
0
OSChina 周六乱弹 —— 现在看动弹的人都是什么状态

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《夏日、教室与望着窗外的我》- Candy_Wind 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
410
5
wamp环境安装redis扩展

1.查看phpinfo信息根据配置信息下载对应的扩展 关键信息:VC14,TS,x86 2.下载php_redis和php_igbinary扩展 php_redis扩展下载地址: https://windows.php.net/downloads/pecl/snaps/redis...

点滴课程
今天
36
0
开源商城开发笔记1-创建MyBatis示例

一、修改pom.xml,引入MyBatis,JUnit,Log4j <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version>......

土龙
今天
56
0
The Best Way To Learn English in 2020 (In my humble opinion.)

✅Here is the plan: THINGS YOU WILL NEED: - 1 hour per day (30 minutes will work as well). - a notebook and a pen to write down new vocabulary each day. - an English song. - an ......

FalconChen
昨天
85
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部