我正在使用 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 时遇到异常:线程“AWT-EventQueue-0”java.lang.ClassCastException 中的异常:brutus.BrutusUI$2 无法转换为 javax.swing.DefaultListModel
。 BrutusUI
是 NetBeans 生成的 swing UI 类(它只是包含所有组件的应用程序的主要入口点)。但是,NetBeans 向我显示 lFrequencyTable.getModel();
的返回值是一个 ListModel
那么为什么它会尝试将 UI 类转换为 DefaultListModel?
最佳答案
它并不是尝试将 BrutusUI
转换为 DefaultListModel
,而是将 brutus.BrutusUI$2
转换为 $2
表示在类 BrutusUI
内声明的匿名类(实现 ListModel
)。
关于Java Swing 类无法转换为 DefaultListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201203/