2011-09-23 6 views
17
durumunu alma

Ben tıklandığındaJToggleButton

JToggleButton but = new JToggleButton("OK") ; 

Şimdi but durumunu ihtiyaç olduğunu varsayalım. Diyelim ki tıklanıp tıklanmadığını bilmem gerek.

cevap

41

Ayrıca takip gibi itemListener en itemStateChanged yöntemi kullanabilirsiniz:

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"); 
     } 
    } 
}); 

ve isSelected() yöntemini

kullanımına son jtb durumunu bilmek istiyorum arasında Yanıtın daha fazla olması için
System.out.println(jtb.isSelected()); 
if(jtb.isSelected()){ 
    System.out.println("button is selected"); 
} else { 
    System.out.println("button is not selected"); 
} 
+0

bunu uygulamak için iyi bir yoldur, 1+ :) –

+0

Teşekkürler @Harry Joy. Bu gerçekten iyi bir ayrıntı ... :) – Dewsworld

+1

Java8'den bu yana lambda ifadesini kullanabilirsiniz ama.addItemListener ((ItemEvent ev) -> {/ * kodunuz * /} –

14

Tıklamaları yanıtlamak için, JToggleButton'a bir ActionListener ekleyin. Durumunu bulmak için, bir JRadioButton gibi, isSelected() yöntemini çağırın. eg için

,

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

Bu olay düzenine dayanan korkarım. ActionPerformed işlevi, dahili düğme geçişini dinlemeden önce çağrıldığında, [zıt sonuç] alırsınız (https://weblogs.java.net/blog/alexfromsun/archive/2011/06/15/swing-better-world- dinleyici). – maaartinus