JRadioButton не может быть приведен к JButton в EventListener

У меня проблема с тем, что я получаю много красных линий в моих выводах взаимодействий, когда я нажимаю JRadioButton в моем коде. Программа просит пользователя выбрать один из четырех ответов на вопрос "Какой ваш любимый фрукт?" Вот выдержка из кода:

   //constructor
    public Form(){

    EventListener listener = new EventListener();

    private class EventListener implements ActionListener{
    public void actionPerformed(ActionEvent e){

    if ((JButton)e.getSource() == fruitButton) {

    selectA = new JRadioButton("Apples");
    selectA.addActionListener(listener);
    selectB = new JRadioButton("Bananas");
    selectB.addActionListener(listener);
    selectC = new JRadioButton("Cherries");
    selectC.addActionListener(listener);
    selectD = new JRadioButton("Other");
    selectD.addActionListener(listener);

    if ((JButton)e.getSource() == quitButton) {
    System.exit(1);
    }

    if (selectAButton.isSelected() || selectBButton.isSelected() || selectCButton.isSelected() || selectDButton.isSelected()) {
    southPanel.add(submitButton);
    }
}}

Тем не менее, когда я запускаю код всякий раз, когда я нажимаю один из выбора JRadioButtons Я получаю много красных линий в выводе взаимодействий, начиная с:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JRadioButton cannot be cast to javax.swing.JButton

я имею JButtons в том же прослушивателе событий (например, есть кнопка выхода), но независимо от того, что я делаю, я не могу добавить кнопку отправки внизу после выбора радиокнопки. Пожалуйста помоги!

1 ответ

Проверьте, действительно ли источником события является JButton, прежде чем его разыграть:

    if(e.getSource() instanceof JButton  && (JButton)e.getSource() == quitButton) {

            System.exit(1);
    }  
Другие вопросы по тегам