Как я должен использовать ActionItemListener на JRadiobutton?

1

Я пытаюсь закодировать очень простую программу Java - если форма заполняется и нажимается на определенную кнопку, то появляется всплывающее сообщение. С другой стороны, если заливка не выбрана, она отобразит разные сообщения.

fill.addItemListener(new ItemListener());
rect.addActionListener(new ButtonListener());

И событие действия, которое я написал:

private class ButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==fill) {
            if(e.getSource()==rect) {
                JOptionPane.showMessageDialog(null,"Shojibur");
            }
            else {
                JOptionPane.showMessageDialog(null,"Checking");
            }
        }
    }
}
  • 2
    Подсказка: if(e.getSource()==rect) никогда не будет достигнута и true одновременно. Проверьте свой блок if . Кроме того, вы добавляете действие lsitener в rect кнопку-переключатель, но не fill переключатель. Следовательно, fill не может быть источником события action → слушатель действия не показывает никакого сообщения.
Теги:
swing
actionlistener
jradiobutton

1 ответ

0

В вашем случае вам не нужен ItemListener для JRadioButton. При нажатии кнопки вы можете проверить, выбран ли переключатель или нет

radioButton.isSelected()

а затем отобразить соответствующие сообщения.

пример

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;

@SuppressWarnings("serial")
public class RadioButtonTest extends JFrame implements ActionListener
{

    private JRadioButton radio;
    private JButton button;

    public RadioButtonTest()
    {
        setSize(300, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new BorderLayout());

        radio = new JRadioButton("Select Me!!");

        button = new JButton("Click Me!!");
        button.addActionListener(this);

        add(radio, BorderLayout.CENTER);
        add(button, BorderLayout.PAGE_END);

        pack();
        setVisible(true);
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new RadioButtonTest();
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == button)
        {
            if (radio.isSelected())
                JOptionPane.showMessageDialog(this, "Selected.");
            else
                JOptionPane.showMessageDialog(this, "NOT selected!!");
        }
    }

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню