JList仅在第一次插入时更新

时间:2013-01-16 02:34:45

标签: java swing jlist

这是我第一次尝试使用适合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,但仍然无法找到我做错的事情。有什么想法吗?

0 个答案:

没有答案