2011-09-23 28 views
17

Nói rằng tôi có mộtBắt bang JToggleButton

JToggleButton but = new JToggleButton("OK") ; 

Bây giờ tôi cần tình trạng but khi nó được nhấp. Tôi có nghĩa là tôi cần phải biết nếu nó được nhấp hay không.

Trả lời

41

Bạn cũng có thể sử dụng phương pháp itemStateChanged của itemListener như sau:

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

và bạn muốn biết tình trạng jtb sau về sử dụng isSelected() phương pháp

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

yep một cách tốt để thực hiện điều này, 1+ :) –

+0

Cảm ơn @Harry Joy. Đó là một công cụ thực sự tốt ... :) – Dewsworld

+1

Vì Java8 bạn có thể sử dụng biểu thức lambda but.addItemListener ((ItemEvent ev) -> {/ * mã của bạn * /} –

14

Để trả lời các nhấp chuột, hãy thêm một ActionListener vào nút JToggleButton. Để tìm trạng thái của nó, giống như JRadioButton, gọi nó là phương thức isSelected().

Đối với ví dụ:

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

nhiều hơn nữa để trả lời điểm. + 1'd – KJW

+0

Tôi e ngại dựa vào thứ tự sự kiện. Khi bạn 'actionPerformed' được gọi trước nút nghe nội bộ, bạn sẽ nhận được [kết quả ngược lại] (https://weblogs.java.net/blog/alexfromsun/archive/2011/06/15/swing-better-world- người nghe). – maaartinus

Các vấn đề liên quan