java - "AWT-EventQueue-0"类转换异常 : JPanel cannot be cast MyJTestPanel

标签 java swing jframe jcheckbox

程序未关闭,但是当我单击复选框时,我收到这样的异常; enter image description here

我的类在这里,它从 JPanel 扩展,我的类在这里,它从 JPanel 扩展,我的类在这里,它从 JPanel 扩展,我的类在这里,它从 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;
}

}

我的点击监听器在这里

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

对于这个异常有什么想法吗?

最佳答案

您正在尝试将 getCenterPanel().getComponents()[i] 的结果转换为 MyJTestPanel,并且您遇到的组件之一是 JPanel。

如果您在该循环中遇到的所有组件都是 MyJTestPanel/扩展 MyJTestPanel,则转换将起作用,但至少有一个(JPanel)不满足此条件,因此转换失败。

关于java - "AWT-EventQueue-0"类转换异常 : JPanel cannot be cast MyJTestPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36203542/

相关文章:

java - 如何将扩展的 jpanel 添加到 jframe

java - 向动态数组的左侧和右侧添加问题

java - 从 JButton actionListener 更新 JLabel

java - 线程中的异常 "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : 0 >= 0

java - 有什么方法可以使用 swing 将背景颜色设置为用户定义的图像吗?

java - 设置 JFrame 的背景颜色不起作用

java - 如何正确隐藏 JFrame

java - Java 中的除法总是结果为零 (0)?

java - Spring Web Flow单元测试: Set attribute in FlowScope without view-state

java - 在 HashMap 值中存储两个值