Изменить состояние кнопки переключения с другой кнопки

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

введите здесь описание изображения

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

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


person Ömer Faruk AK    schedule 09.11.2011    source источник


Ответы (4)


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);
    }
}
person mKorbel    schedule 09.11.2011

Добавьте actionListener к вашему JButton и в методе actionPerformed(ActionEvent) измените состояние всех JToggleButtons. Убедитесь, что все ваши 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);
person Harry Joy    schedule 09.11.2011

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

person mre    schedule 09.11.2011
comment
Какая функция переключателя меняет свое состояние? - person Ömer Faruk AK; 09.11.2011
comment
См. setSelected(false). - person mre; 09.11.2011
comment
Состояние кнопки можно переключать с помощью doClick() или устанавливать с помощью setSelected(boolean). Проверьте javadocs на эффект каждого. - person Andrew Thompson; 09.11.2011

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

B1.setSelected(false);

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

person Sabas Mendivil    schedule 14.05.2013