2016-07-31 3 views
0

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

//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 в том же прослушивателе событий (например, есть кнопка выхода), но независимо от того, что я делаю, я не могу заставить кнопку отправки добавить внизу, как только была выбрана радиокнопка. Пожалуйста помоги!

+0

обеспечивают полный код с 'button' декларации –

+1

Вы бросаете источник Вашего мероприятия безусловно к JButton. Это приводит к исключению ClassCastException, когда источником является JRadioButton. Вы должны сначала проверить, что вы получаете, а затем бросаете. – garnulf

ответ

0

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

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

      System.exit(1); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^