【问题标题】:"AWT-EventQueue-0" ClassCastException: JPanel cannot be cast MyJTestPanel“AWT-EventQueue-0”ClassCastException:无法投射 JPanel MyJTestPanel
【发布时间】:2016-03-24 15:10:38
【问题描述】:

程序没有关闭,但是当我点击我的复选框时,我得到了这样的异常;

我的课在这里,它是从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;
}

}

我的 clicklistener 在这里

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

对这个例外有什么想法吗?

【问题讨论】:

  • MyJTestPanelJPanel 的子类吗?你确定getCenterPanel().getComponents()[i]MyJTestPanel 实例吗?
  • 不要发布堆栈跟踪的图片。复制堆栈跟踪的文本,每行缩进四个空格,然后将其粘贴到您的问题中。

标签: java swing jframe jcheckbox


【解决方案1】:

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

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

【讨论】:

  • 更新了我的代码,是的,我的课程扩展了 JPanel。我的编辑器(intellij)有问题吗?
  • 我的 centerPanel 中有另一个组件,所以我收到了这个错误。谢谢@Meiko 的建议。这是正确的我的代码 if (getCenterPanel().getComponents()[i] instanceof MyJTestPanel)
猜你喜欢
  • 1970-01-01
  • 2017-05-09
  • 2015-01-12
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
相关资源
最近更新 更多