获取 JToggleButton 的状态

Posted

技术标签:

【中文标题】获取 JToggleButton 的状态【英文标题】:Getting the state of JToggleButton 【发布时间】:2011-11-23 09:12:21 【问题描述】:

说我有一个

JToggleButton but = new JToggleButton("OK") ;

现在我需要but 被点击时的状态。我的意思是我需要知道它是否被点击。

【问题讨论】:

【参考方案1】:

您也可以使用 itemListener 的 itemStateChanged 方法,如下所示:

JToggleButton jtb = new JToggleButton("Press Me");
jtb.addItemListener(new ItemListener() 
   public void itemStateChanged(ItemEvent ev) 
      if(ev.getStateChange()==ItemEvent.SELECTED)
        System.out.println("button is selected");
       else if(ev.getStateChange()==ItemEvent.DESELECTED)
        System.out.println("button is not selected");
      
   
);

你们中的一些人想知道jtb 后者在使用isSelected() 方法时的状态

System.out.println(jtb.isSelected());
if(jtb.isSelected())
    System.out.println("button is selected");
 else 
    System.out.println("button is not selected");

【讨论】:

从 Java8 开始你可以使用 lambda 表达式 but.addItemListener((ItemEvent ev) -> /* 你的代码 */ 【参考方案2】:

要响应点击,请将 ActionListener 添加到 JToggleButton。要找到它的状态,就像 JRadioButton 一样,调用它的 isSelected() 方法。

例如,

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JToggleButton;

public class ToggleTest 
   public static void main(String[] args) 
      JToggleButton toggleBtn = new JToggleButton("Toggle Me!");
      toggleBtn.addActionListener(new ActionListener() 

         public void actionPerformed(ActionEvent e) 
            JToggleButton tBtn = (JToggleButton)e.getSource();
            if (tBtn.isSelected()) 
               System.out.println("button selected");
             else 
               System.out.println("button not selected");
            
         
      );

      JOptionPane.showMessageDialog(null, toggleBtn);
   

【讨论】:

恐怕这依赖于事件排序。当您在内部按钮切换侦听器之前调用 actionPerformed 时,您将获得 opposite result。

以上是关于获取 JToggleButton 的状态的主要内容,如果未能解决你的问题,请参考以下文章

JToggleButton 和意外的 nullPointerException

jToggleButton的while循环错误:JAVA

综合运用开关按钮JToggleButton复选框JCheckBox单选框JRadioButton和按钮ButtonGroup,设计如下界面

toggle,hasClass

java中经常使用的Swing组件总结

Bootstrap Toggle:将多个复选框的切换状态设置为“关闭”