编辑netbeans自动生成的代码

mah*_*ood 5 java netbeans-8

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

DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>( model );
Run Code Online (Sandbox Code Playgroud)

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

private javax.swing.JList<String> list;
...
list = new javax.swing.JList<>();
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能将该行更改为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]; }
    });
Run Code Online (Sandbox Code Playgroud)

我不知道如何使用它。我看到一些与我的类似的问题,但我不清楚问题到底是什么以及为什么我无法按预期以正常方式添加/删除项目!

Bla*_*nka 1

private这是因为当 netbeans 为您生成代码时,它会添加变量和方法的访问修饰符。您可以将它们更改为public,然后您就可以更改。要做到这一点,

一种方法:

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

或者:

转到 jList属性-> 单击代码选项卡,然后在其中将变量修饰符 private更改为public,然后您可以更改问题中显示的代码。

更新:

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

list.setModel(model);
Run Code Online (Sandbox Code Playgroud)

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

添加元素:

model.addElement("anything here");
Run Code Online (Sandbox Code Playgroud)

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

DefaultListModel<String> model;
public NewJFrame() {
    initComponents();
}
Run Code Online (Sandbox Code Playgroud)