2011-11-09 39 views
9

Tôi đang tạo một GUI Java bằng cách sử dụng Swing với Eclipse và Window Builder Pro. Tôi đang sử dụng JButtonsJToggleButtons. Tôi muốn thay đổi trạng thái của nút chuyển đổi từ nút khác.Thay đổi trạng thái nút chuyển đổi từ một nút khác

enter image description here

Ví dụ, khi tôi bấm vào lưới rõ ràng, tất cả các nút Toggle sẽ là 'không được chọn'.

Tôi làm cách nào để thực hiện việc này? Các phương pháp mà tôi phải sử dụng cho các nút và nút chuyển đổi là gì?

Trả lời

5

toggleButton.setSelected(boolean b)

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.AbstractButton; 
import javax.swing.JFrame; 
import javax.swing.JToggleButton; 

public class JToggleButtonAction { 

    public static void main(String args[]) { 
     JFrame frame = new JFrame("Selecting Toggle"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JToggleButton toggleButton = new JToggleButton("Toggle Button"); 
     final JToggleButton toggleButton1 = new JToggleButton("Another Toggle Button"); 
     ActionListener actionListener = new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent actionEvent) { 
       AbstractButton abstractButton = (AbstractButton) actionEvent.getSource(); 
       boolean selected = abstractButton.getModel().isSelected(); 
       System.out.println("Action - selected=" + selected + "\n"); 
       toggleButton1.setSelected(selected); 
      } 
     }; 
     toggleButton.addActionListener(actionListener); 
     frame.add(toggleButton, BorderLayout.NORTH); 
     frame.add(toggleButton1, BorderLayout.SOUTH); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
3

Đăng ký ActionListener vào ví dụ JButton và đảm bảo bạn có thể truy cập các nút chuyển đổi trong đó để thao tác trạng thái của chúng.

+0

Chức năng của nút chuyển đổi nào thay đổi trạng thái của nó? –

+1

Xem ['setSelected (false)'] (http://download.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#setSelected%28boolean%29) – mre

+3

Trạng thái nút có thể được bật sử dụng 'doClick()' hoặc đặt bằng cách sử dụng 'setSelected (boolean)'. Kiểm tra javadocs để biết hiệu quả của mỗi cái. –

4

Thêm actionListener vào phương thức JButton của bạn và trong actionPerformed (ActionEvent) thay đổi trạng thái của tất cả các nút JToggleButtons. Hãy chắc chắn rằng tất cả các JToggleButton của bạn có thể truy cập trong phương pháp này. Một ví dụ đơn giản sẽ là ..

JFrame frame = new JFrame("Panel image demo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400, 400); 
    frame.setLayout(new FlowLayout()); 

    final JToggleButton[] button = new JToggleButton[10]; 
    for (int i = 0; i < button.length; i++) { 
     button[i] = new JToggleButton("Toggle Us"); 
     frame.add(button[i]); 
    } 
    JButton jButton = new JButton("Toggle that button"); 
    jButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      for (JToggleButton jToggleButton : button) { 
       jToggleButton.setSelected(!jToggleButton.isSelected()); // <-- this will change the state of toggle button 
      } 
     } 
    }); 

    frame.add(jButton); 
    frame.setVisible(true); 
1

tôi đang tìm kiếm này, điều này có thể giúp ai đó ra

B1.setSelected(false); 

tôi đã thực hiện một phương pháp mà làm cho tất cả nút của tôi sai (bỏ chọn các chuyển đổi khi tôi muốn)

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