2016-07-31 4 views
0

私のコードでJRadioButtonをクリックすると、私のインタラクションの出力にたくさんの赤い線が表示されます。プログラムは、 "あなたの好きな果物は何ですか?"という質問に対する4つの回答の1つを選択するようにユーザーに求めています。ここでは、コードからの抜粋です:JRadioButtonをEventListenerのJButtonにキャストすることができません

//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を同じイベントリスナーに持っています(たとえば終了ボタンがあります)。ラジオボタンが選択された後は、送信ボタンを下部に追加することはできません。助けてください!イベントソースは、あなたがそれを唱える前に、実際のJButtonの場合

+0

はあなたが無条件のJButtonにあなたのイベントのソースをキャストしている 'button'宣言 –

+1

との完全なコードを提供します。ソースがJRadioButtonの場合、ClassCastExceptionが発生します。最初に取得してキャストしたものをinstanceofで確認する必要があります。 – garnulf

答えて

0

チェック:

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

      System.exit(1); 
    } 
関連する問題