java 开关按钮_Java Swing JToggleButton开关按钮的实现
1. 概述
官方JavaDocsApi: javax.swing.JToggleButton
JToggleButton,开关按钮。JToggleButton 是 JRadioButton, JCheckBox 的父类,主要实现一个按钮的两种状态(选中 和 未选中)来实现开关切换的效果。
JToggleButton 常用构造方法:
// 无文本,默认未选中
JToggleButton()
// 有文本,默认未选中
JToggleButton(String text)
// 有文本,并指定是否选中
JToggleButton(String text, boolean selected)
JToggleButton 常用方法:
// 设置开关按钮的 文本、字体 和 字体颜色
void setText(String text)
void setFont(Font font)
void setForeground(Color fg)
/* 以下方法定义在 javax.swing.AbstractButton 基类中 */
// 设置开关按钮是否选中状态
void setSelected(boolean b)
// 判断开关按钮是否选中
boolean isSelected()
// 设置开关按钮是否可用
void setEnabled(boolean enable)
// 设置开关按钮在 默认(关)、被选中(开)、不可用 时显示的图片
void setIcon(Icon defaultIcon)
void setPressedIcon(Icon pressedIcon)
void setDisabledIcon(Icon disabledIcon)
// 设置图片和文本之间的间距
void setIconTextGap(int iconTextGap)
JToggleButton 常用监听器:
// 添加状态改变监听器
void addChangeListener(ChangeListener l)
2. 代码实例: 默认的开关按钮
package com.xiets.swing;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("测试窗口");
jf.setSize(250, 250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 创建开关按钮
JToggleButton toggleBtn = new JToggleButton("开关按钮");
// 添加 toggleBtn 的状态被改变的监听
toggleBtn.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// 获取事件源(即开关按钮本身)
JToggleButton toggleBtn = (JToggleButton) e.getSource();
System.out.println(toggleBtn.getText() + " 是否选中: " + toggleBtn.isSelected());
}
});
panel.add(toggleBtn);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
结果展示:
运行代码,点击开关按钮,查看控制台输出。
3. 代码实例: 自定义图片开关
使用下面两个图片分别代表开关按钮的 选中(开) 和 未选中(关) 状态,分别命名为: toggle_on.png,toggle_off.png:
package com.xiets.swing;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("测试窗口");
jf.setSize(250, 250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 创建开关按钮
JToggleButton toggleBtn = new JToggleButton();
// 首先设置不绘制按钮边框
toggleBtn.setBorderPainted(false);
// 设置 选中(开) 和 未选中(关) 时显示的图片
toggleBtn.setSelectedIcon(new ImageIcon("toggle_on.png"));
toggleBtn.setIcon(new ImageIcon("toggle_off.png"));
// 添加 toggleBtn 的状态被改变的监听
toggleBtn.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// 获取事件源(即开关按钮本身)
JToggleButton toggleBtn = (JToggleButton) e.getSource();
System.out.println(toggleBtn.getText() + " 是否选中: " + toggleBtn.isSelected());
}
});
panel.add(toggleBtn);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
java 开关按钮_Java Swing JToggleButton开关按钮的实现相关推荐
- java单选按钮_Java Swing JRadioButton:单选按钮组件
单选按钮与复选框类似都有两种状态,不同的是一组单选按钮中只能有一个处于选中状态.Swing 中 JRadioButton 类实现单选按钮,它与 JCheckBox 一样都是从 JToggleButto ...
- swing java管理系统_Java swing实现酒店管理系统
packagecom.sunshine.setup;import javax.swing.*;import javax.swing.border.*;import javax.swing.table. ...
- 合金弹头java视频_Java swing实现的仿植物大战僵尸版合金弹头游戏源码附带视频指导教程...
<p> <span style="font-family:微软雅黑;font-size:16px;color:#555555;line-height:2;"> ...
- java滑块_Java Swing JSlider滑块的实现示例
1. 概述 JSlider,滑块. 以图形方式在有界区间内通过移动滑块来选择值的组件. 滑块可以显示主刻度标记以及主刻度之间的次刻度标记.刻度标记之间的值的个数由 setMajorTickSpacin ...
- 游戏合金弹头的java源代码_java swing实现合金弹头小游戏源码附带视频指导运行教程...
<p> <span style="color:#555555;font-family:"font-size:16px;background-color:#FFFF ...
- java钢琴_Java swing实现支持录音等功能的钢琴程序
今天给大家介绍一下Java实现钢琴的小程序,程序虽小,功能挺多,支持循环播放,录音等功能,首先简单介绍下源码结构: 先看看钢琴界面实现,添加相应滴监听事件: /* * @(#)MidiSynth.ja ...
- java滚动条_java Swing界面优化JscrollPane滚动条教程
滚动条,一个很小且不显眼的东西,却左右着一个界面的整体美感. Java中的原生态滚动条,实在不敢恭维,就拿我们之前优化过的界面来说,如果加上原生态的滚动条,美观度立马就反弹了. 优化思路: 1.继承B ...
- java皮肤_Java swing皮肤(look and feel)大全
########## 优选 ########## Weblaf:非常赞的套件,界面现代.简约.依赖包较少.有开源也有商业协议,个人最喜欢的皮肤. https://github.com/mgarin/w ...
- java滚动条_java swing:文本框添加滚动条
有几点要注意: 1.默认的滚动条,仅在输入的文本超过文本框时才会显示..没有超过文本框是不会显示的: 2.设置矩形大小,是在滚动条上设置,而不是在文本框上设置: 示例代码如下: public clas ...
最新文章
- 技术分享丨关于 Hadoop 的那些事儿
- ultraedit26 运行的是试用模式_如何并行运行你的自动化测试?
- 三探云原生全景图,这次聊聊运行时层
- 在shell中全局变量与局部变量的区别及其举例
- 【力扣】NO.1.两数之和
- 【3】Keras.applications包,一堆可以复用的深度学习模型库
- BIDS 怪异现象(转载)
- 拓展软文写作主题角度
- 《一个广告人的自白》读书笔记
- 拒绝“重复造轮子”,百度EasyDL让你玩转AI定制开发
- php中理解print EOT分界符和echo EOT的用法区别
- Nginx动静分离配置
- 双基因突变患者_一例 Kallmann 综合征患者双基因突变分析
- 人脸识别RK主板方案
- PHP 生成随机昵称或用户名
- Spring Cloud Gateway 不小心换了个 Web 容器就不能用了,我 TM 人傻了
- 码农三十岁之后过上了怎么的生活?
- 饺子(节操)播放器集成问题
- 修道士和野人java_修道士和野人问题
- 数字图像处理实验二 图像变换