Отменено JRadioButton - PullRequest
       19

Отменено JRadioButton

0 голосов
/ 21 января 2012

Код, который я создаю, включает JRadioButton и JComboBox.Я хочу, чтобы JComboBox был включен, если JRadioButton выбран и отключен, если он не выбран или не выбран.Моя проблема в том, что JComboBox не будет отключен, если я откажусь от выбора JRadioButton.Как я могу это сделать?Вот мой код

    LouisClub=new JComboBox();
    LouisClub.setEnabled(false);

    LouisClub.addItem("Writer");
    LouisClub.addItem("Photojournalist");
    LouisClub.addItem("Cartoonist");
    LouisClub.addItem("Layout Artist");

    Louis=new JRadioButton("The Louisian");

    Louis.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            LouisClub.setEnabled(true);
        }
    });

Ответы [ 2 ]

1 голос
/ 21 января 2012

Вы должны использовать ItemListener вместо ActionListener. Вот код:

public class Toto extends JPanel {

    private JComboBox LouisClub;
    private JRadioButton Louis;

    /**
     * Create the panel.
     */
    public Toto() {
        LouisClub = new JComboBox();
        LouisClub.setEnabled(false);

        LouisClub.addItem("Writer");
        LouisClub.addItem("Photojournalist");
        LouisClub.addItem("Cartoonist");
        LouisClub.addItem("Layout Artist");

        Louis = new JRadioButton("The Louisian");

        Louis.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                boolean ok = e.getStateChange()==ItemEvent.SELECTED;
                LouisClub.setEnabled(ok);
            }
        });

        add(Louis);
        add(LouisClub);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setContentPane(new Toto());
        frame.pack();
        frame.setVisible(true);
    }
}

У меня есть еще два комментария:

  1. Java-разработчики не используют заглавные буквы на начало их переменных (они предпочитают louisClub вместо LouisClub)
  2. Мой основной метод работает, но это не лучший способ создать окно (см. Java-учебник для получения дополнительной информации).

прощай

Жан-Марк

1 голос
/ 21 января 2012

Вы должны JCheckBox вместо JRadioButton для таких вещей, а затем вам нужно проверить состояние checkBox в методе actionPerformed () и на основе этого включить / отключить comboBox. Что-то вроде

Louis=new JCheckBox();
Louis.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
       LouisClub.setEnabled(((JCheckBox)e.getSource()).isSeleted());
    }
}

Также может быть (не обязательно) использовать ChangeListener вместо ActionListener.

    Louis.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent ce) {
             LouisClub.setEnabled(((JCheckBox)ce.getSource()).isSeleted());
        }
    });
...