Изменить состояние кнопки переключения с другой кнопки - PullRequest
9 голосов
/ 09 ноября 2011

Я создаю графический интерфейс Java с использованием Swing с Eclipse и Window Builder Pro.Я использую JButtons и JToggleButtons.Я хочу изменить состояние кнопки переключения с другой кнопки.

enter image description here

Например, когда я нажимаю на чистую сетку, все кнопки переключения будут «не выбраны».

Как я могу это сделать?Какие методы я должен использовать для переключения кнопок и кнопок?

Ответы [ 4 ]

5 голосов
/ 09 ноября 2011

toggleButton.setSelected (логическое значение 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);
    }
}
4 голосов
/ 09 ноября 2011

Добавьте actionListener к вашему JButton и в методе actionPerformed (ActionEvent) измените состояние всех JToggleButton. Убедитесь, что все ваши JToggleButton доступны в этом методе. Простой пример будет ..

    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);
3 голосов
/ 09 ноября 2011

Зарегистрируйте ActionListener для экземпляра JButton и убедитесь, что у вас есть доступ к переключающим кнопкам для управления их состоянием.

1 голос
/ 14 мая 2013

Я искал это, это может помочь кому-то

B1.setSelected(false);

я сделал метод, который делает все мои кнопки ложными (отмените переключение, когда я этого хотел)

...