这是我第一次尝试使用适合Java应用程序的GUI,我需要使用JLists和自定义ListModels来表示某些结构。
//The 2 below structures implement the ListModel interface, using an internal
//ArrayList, in order to be used as
//a model for 2 different JLists in my GUI.
private PropertyList propertiesList = new PropertyList();
private SelectedProperties selProperties = new SelectedProperties();
//and these are the two JLists they are the models for
private javax.swing.JList Properties_JList;
private javax.swing.JList SelectedProperties_JList;
这里我通过流填充我的第一个JList:
private void OpenFile_MenuItemActionPerformed(java.awt.event.ActionEvent evt) {
final JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(null);
int returnVal = fc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
this.Properties_JList.setModel(propertiesList);
this.propertiesList.AddFromFile(file);
} else {
//...
}
}
恰好工作得非常好。我通过读取文件导入一些条目,它们都以.toString()表示形式按预期显示。
问题是第二个JList:
private void AddToSelected_JButtonActionPerformed(java.awt.event.ActionEvent evt) {
Property p = (Property) this.Properties_JList.getSelectedValue();
this.SelectedProperties_JList.setModel(selProperties);
this.selProperties.InsertProperty(p);
this.SelectedProperties_JList.revalidate();
}
这似乎只显示 我尝试通过上述按钮事件添加到它的第一个项目,我不知道为什么。我考虑在表单的initComponents()调用之后立即调用两个.setModel(...)调用,但如果我这样做,则根本不会填充任何列表。
记录消息清楚地表明内部结构 已经填充,但即使它们都是我的JLists的ListModel,其中一个也没有按预期工作。
代码的足够部分是由Netbeans生成的,我花了几个小时查找API,但仍然无法找到我做错的事情。有什么想法吗?