Java Swing JToggleButton开关按钮的实现

 更新时间:2019年12月09日 10:13:52   作者:xietansheng  
这篇文章主要介绍了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设计模式之组合模式原理与用法详解

    这篇文章主要介绍了JAVA设计模式之组合模式,简单说明了组合模式的原理,并结合实例分析了java组合模式的具体用法,需要的朋友可以参考下
    2017-08-08
  • 浅谈java web中常用对象对应的实例化接口

    浅谈java web中常用对象对应的实例化接口

    下面小编就为大家带来一篇浅谈java web中常用对象对应的实例化接口。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 解决SpringBoot返回结果如果为null或空值不显示处理问题

    解决SpringBoot返回结果如果为null或空值不显示处理问题

    这篇文章主要介绍了解决SpringBoot返回结果如果为null或空值不显示处理问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot集成easy-rules规则引擎流程详解

    SpringBoot集成easy-rules规则引擎流程详解

    这篇文章主要介绍了SpringBoot集成easy-rules规则引擎流程,合理的使用规则引擎可以极大的减少代码复杂度,提升代码可维护性。业界知名的开源规则引擎有Drools,功能丰富,但也比较庞大
    2023-03-03
  • Springboot启用多个监听端口代码实例

    Springboot启用多个监听端口代码实例

    这篇文章主要介绍了Springboot启用多个监听端口代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 微信java开发之实现微信主动推送消息

    微信java开发之实现微信主动推送消息

    这篇文章主要介绍了微信开发过程中的使用java实现微信主动推送消息示例,需要的朋友可以参考下
    2014-03-03
  • Java实现去重的方法详解

    Java实现去重的方法详解

    austin支持两种去重的类型:N分钟相同内容达到N次去重和一天内N次相同渠道频次去重,这篇文章就来和大家讲讲这两种去重的具体实现,需要的可以参考一下
    2023-06-06
  • SpringBoot解决jar包冲突的问题,简单有效

    SpringBoot解决jar包冲突的问题,简单有效

    这篇文章主要介绍了SpringBoot解决jar包冲突的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java 中的变量类型

    Java 中的变量类型

    这篇文章主要介绍了Java 中的变量类型,一般包括局部变量、成员变量、类变量,下面文章对这三种内容的变量做了一个详细介绍,需要的朋友可以参考一下
    2021-11-11
  • Springboot Activemq整合过程代码图解

    Springboot Activemq整合过程代码图解

    这篇文章主要介绍了Springboot Activemq整合过程代码图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论