【问题标题】:Java Swing class cannot be cast into DefaultListModelJava Swing 类不能转换为 DefaultListModel
【发布时间】:2015-01-28 19:54:53
【问题描述】:

我正在使用 Swing 进行一个项目,并且我有以下事件处理程序:

private void txtInputKeyPressed(java.awt.event.KeyEvent evt) {                                    

    if (evt.getKeyCode() == ENTER) {
        DefaultListModel listModel = (DefaultListModel) lFrequencyTable.getModel();

        listModel.removeAllElements();

        ArrayList<FrequencyChar> table = 
                engine.computeFrequencyTable(txtInput.getText());

        for (FrequencyChar f: table) {
            listModel.addElement(f.character);
        }
    }
} 

很多代码是从 Netbeans 自动生成的,这就是我没有发布所有 UI 代码的原因。当我尝试初始化 listModel 时出现异常:Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: brutus.BrutusUI$2 cannot be cast to javax.swing.DefaultListModelBrutusUI 是由 NetBeans 生成的 swing UI 类(它只是包含所有组件的应用程序的主要入口点)。但是,NetBeans 向我显示 lFrequencyTable.getModel(); 的返回值是 ListModel 那么它为什么要尝试将 UI 类转换为 DefaultListModel?

【问题讨论】:

    标签: java swing netbeans awt


    【解决方案1】:

    它不是试图将BrutusUI 转换为DefaultListModel,而是brutus.BrutusUI$2,其中$2 表示在BrutusUI 类中声明的匿名类(实现ListModel)。

    【讨论】:

    • 您不要将其转换为 DefaultListModel,而是将其保留为 ListModel 并在其上使用 ListModel 方法(除非在 BrutusUI 文档中另有说明)。
    • 但是 ListModel 没有实现 removeAllElements 方法。
    猜你喜欢
    • 2021-04-28
    • 2023-03-23
    • 2013-10-09
    • 2021-02-27
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多