2016-07-31 42 views
0

Ich habe ein Problem, bei dem ich viele rote Linien in meine Interaktionen bekomme, wenn ich in meinem Code auf JRadioButton klicke. Das Programm fordert den Benutzer auf, eine der vier Antworten auf die Frage "Was ist deine Lieblingsfrucht?" Auszuwählen. Hier ist ein Auszug aus dem Code:JRadioButton kann nicht in EventListener in JButton umgewandelt werden

//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); 
    } 
}} 

Allerdings, wenn ich den Code ausführen, wenn ich auf eine der Auswahl JRadioButtons ich viele rote Linien in den Wechselwirkungen Ausgang, beginnend mit:

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

Ich habe JButtons in der gleichen Event-Listener (es gibt eine Schaltfläche zum Beenden zum Beispiel), aber egal was ich tue ich kann nicht scheinen, die Submit-Taste am unteren Rand hinzufügen, sobald ein Radio-Button ausgewählt wurde. Bitte helfen Sie!

+0

bieten den vollständigen Code mit dem 'button' Erklärung –

+1

Sie sind die Quelle Ihrer Veranstaltung bedingungslos auf einen JButton Gießen. Dies führt zu einer ClassCastException, wenn die Quelle ein JRadioButton ist. Sie müssen zuerst prüfen, was Sie bekommen und dann werfen. – garnulf

Antwort

0

Überprüfen Sie, ob die Ereignisquelle ist in der Tat ein JButton, bevor Sie es Stimmen:

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

      System.exit(1); 
    }