获得JToggleButton的状态

Dew*_*rld 22 java swing listeners jtogglebutton

说我有一个

JToggleButton but = new JToggleButton("OK") ;
Run Code Online (Sandbox Code Playgroud)

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

Har*_*Joy 50

您还可以使用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");
      }
   }
});
Run Code Online (Sandbox Code Playgroud)

并且你想知道jtb后者在使用isSelected()方法上的状态

System.out.println(jtb.isSelected());
if(jtb.isSelected()){
    System.out.println("button is selected");
} else {
    System.out.println("button is not selected");
}
Run Code Online (Sandbox Code Playgroud)

  • 从Java8开始,您可以使用lambda表达式但是.addItemListener((ItemEvent ev) - > {/*您的代码*/} (2认同)

Hov*_*els 14

要响应单击,请将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);
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 恐怕这取决于事件顺序。当您在内部按钮切换侦听器之前调用“actionPerformed”时,您会得到[相反的结果](https://weblogs.java.net/blog/alexfromsun/archive/2011/06/15/swing-better-world-听众)。 (2认同)