2011-09-23 6 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 बाद के राज्य isSelected() विधि

पता करने के लिए उपयोग पर चाहते हैं
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

जावा 8 के बाद से आप लैम्ब्डा अभिव्यक्ति का उपयोग कर सकते हैं लेकिन .addItemListener ((ItemEvent ev) -> {/ * आपका कोड * /} –

14

क्लिक का जवाब देने के लिए, JToggleButton में एक एक्शनलिस्टर जोड़ें। इसकी स्थिति को ढूंढने के लिए, बस जेराडियो बटन की तरह, इसे कॉल किया गया है() विधि।

उदाहरण के लिए,

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 किया गया – KJW

+0

मुझे डर है कि घटना आदेश पर निर्भर करता है। जब आप 'क्रियाप्रदर्शित' को आंतरिक बटन टॉगलिंग श्रोता से पहले बुलाते हैं, तो आपको [विपरीत परिणाम] मिलता है (https://weblogs.java.net/blog/alexfromsun/archive/2011/06/15/swing-better-world- श्रोताओं)। – maaartinus