2016-03-24 6 views
0

Programm nicht geschlossen, aber wenn ich auf meine Checkbox klicke, bekomme ich eine Ausnahme wie diese; enter image description here"AWT-EventQueue-0" ClassCastException: JPanel kann nicht umgewandelt werden MyJTestPanel

meiner Klasse ist hier und es ist, erstreckt sich von JPanel, meine Klasse hier ist und es erstreckt sich von JPanel, meine Klasse hier ist und es erstreckt sich von JPanel, meine Klasse hier ist, und es wird sich von JPanel

public class MyJTestPanel extends JPanel { 

private JCheckBox cboxInfo; 
private JLabel lblResult; 
private JButton btnAgain; 

public MyJTestPanel(String testName, String testContext){ 

    setLayout(new MigLayout()); 
    setMaximumSize(new Dimension(400, 30)); 
    setName(testName); 

    cboxInfo = new JCheckBox(testContext); 
    add(cboxInfo, "gapright 10, height 30, width 250, cell 0 0"); 

    lblResult = new JLabel(); 
    lblResult = new JLabel(); 
    lblResult.setBackground(Color.RED); 
    lblResult.setOpaque(true); 
    add(lblResult, "gapright 10, height 30, width 30, cell 1 0"); 

    btnAgain = new JButton("Test again"); 
    btnAgain.setVisible(false); 
    add(btnAgain,"height 30, width 80, cell 2 0"); 

} 


public JCheckBox getCboxInfo() { 
    return cboxInfo; 
} 

public JLabel getLblResult() { 
    return lblResult; 
} 

public JButton getBtnAgain() { 
    return btnAgain; 
} 

}

und mein clicklistener ist hier

cboxSelectAll.addItemListener(new ItemListener() { 
       public void itemStateChanged(ItemEvent e) { 
        boolean isChecked = ((JCheckBox) e.getItem()).isSelected(); 
        for (int i = 0; i < getCenterPanel().getComponents().length; i++) { 

         ((MyJTestPanel) getCenterPanel().getComponents()[i]).getCboxInfo().setSelected(isChecked);//exception is here... 
        } 
       } 
      }); 

gibt es eine Idee für diese Ausnahme?

+0

Ist 'MyJTestPanel' eine Unterklasse von' JPanel'? Sind Sie sicher, dass 'getCenterPanel(). GetComponents() [i]' eine 'MyJTestPanel' Instanz ist? –

+0

Veröffentlichen Sie kein Bild eines Stack-Trace. Kopieren Sie den Text des Stack-Trace, ziehen Sie jede Zeile um vier Leerzeichen ein und fügen Sie sie in Ihre Frage ein. – VGR

Antwort

1

Sie versuchen, das Ergebnis der getCenterPanel(). GetComponents() [i] zu einem MyJTestPanel, und eine der Komponenten, die Sie ist ein JPanel begegnen zu werfen.

Wenn alle Komponenten in dieser Schleife ein MyJTestPanel/extend MyJTestPanel sind, dann würde die Umwandlung funktionieren, aber mindestens eine, die JPanel, erfüllt diese Kriterien nicht und daher schlägt die Umwandlung fehl.

+0

habe meinen Code aktualisiert, ja meine Klasse erweitert JPanel. Gibt es ein Problem mit meinem Editor (intellij)? – enes

+0

da ist eine andere Komponente in meinem centerPanel, also habe ich diesen Fehler bekommen. Vielen Dank @Meiko für vorschlagen. Hier ist mein Code korrekt if (getCenterPanel(). getComponents() [i] instanceof MyJTestPanel) – enes

Verwandte Themen