首页 > 开发 > Java > 正文

Java Swing JToggleButton开关按钮的实现

2020-07-28 13:48:40
字体:
来源:转载
供稿:网友

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);  }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表