2011-09-23 60 views
17
的狀態

說我有一個獲取JToggleButton中

JToggleButton but = new JToggleButton("OK") ; 

現在我需要的but狀態點擊時。我的意思是我需要知道它是否被點擊。

回答

41

您還可以使用的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後者狀態​​方法

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

是的一個很好的方式來實現這個,1+ :) –

+0

謝謝@哈利歡樂。這是一個很好的闡述... :) – Dewsworld

+1

由於Java8可以使用lambda表達式 but.addItemListener((ItemEvent ev) - > {/ *您的代碼* /} –

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); 
    } 
} 
+0

更重要的是要點答案。 + 1'd – KJW

+0

恐怕依靠事件排序。如果在內部按鈕切換偵聽器之前調用'actionPerformed',則會得到[相反結果](https://weblogs.java.net/blog/alexfromsun/archive/2011/06/15/swing-better-world-聽衆)。 – maaartinus