通过 netbeans 编辑自动生成的代码

Editing auto generated code by netbeans

使用 Netbeans,我创建了一个 GUI 表单并添加了一个 JList 组件。为了添加项目,我根据很多网站创建了一个ListModel

DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>( model );

问题是第二行是Netbeans自动生成的,不可编辑!所以,我明白了

private javax.swing.JList<String> list;
...
list = new javax.swing.JList<>();

那么如何将该行更改为 JList<>( model )?我不得不说,在生成的代码中,我看到

 list.setModel(new javax.swing.AbstractListModel<String>() {
        String[] strings = { "String" };
        public int getSize() { return strings.length; }
        public String getElementAt(int i) { return strings[i]; }
    });

不知道有什么用。我看到了一些与我类似的问题,但我不清楚到底是什么问题以及为什么我不能按预期以正常方式 add/remove 项目!

那是因为当 netbeans 为您生成代码时,它会为变量和方法添加访问修饰符 private。您可以将它们更改为 public,这样您就可以进行更改。为此,

一种方法:

导航器 或 GUI 中的 jList 上右键单击。接下来,转到自定义代码然后,您将在其中弹出window将默认代码更改为自定义属性.

或:

转到 jList 属性 -> 单击 代码选项卡 并在其中更改 变量修饰符 privatepublic 然后你可以更改你在问题中显示的代码。

更新:

model = new DefaultListModel<>();
list = new javax.swing.JList();

list.setModel(model);

删除 setModel() 中的参数并将模型传递给它。

添加元素:

model.addElement("anything here");

最后一件事将您的 DefaultListModel 声明更新为上面的 JForm 构造函数:

DefaultListModel<String> model;
public NewJFrame() {
    initComponents();
}