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

说我有一个

JToggleButton but = new JToggleButton("OK") ;

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

【问题讨论】:

    标签: java swing listeners jtogglebutton


    【解决方案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
    猜你喜欢
    • 2014-05-26
    • 2016-08-08
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多