我正在使用NetBeans创建一个小程序,我希望能够在JList中显示String数组的内容。我使用NetBeans的设计视图在JPanel中创建了一个JList,并从swing控件列表中将JList选项拖到JPanel中。
JList被命名为listbox,我试图从名为routeList的String数组中填充它。我的代码是:
void startup(){
routeList[0]="Julie";
routeList[1]="Helen";
routeList[2]="Sophie";
routeList[3]="Lizzie";
routeList[4]="Maria";
routeList[5]="Angela";
DefaultListModel<String> mmodel = new DefaultListModel<String>();
for(int x=0;x<5;x++){
mmodel.addElement(routeList[x]);
}
listbox.setModel(mmodel);
listbox.setSelectedIndex(0);
}
代码运行正常,我知道方法启动正在执行,但没有任何反应 - 屏幕上的JList框保持空白。
这是我第一次尝试使用JList。我在网上发现了很多关于它的东西,但大多数建议代码就像这样,我无法弄清楚我做错了什么。它可能与JList属性中的model属性有关吗?
有人可以告诉我出了什么问题,或者告诉我应该使用哪些代码。
答案 0 :(得分:0)
经过2天的搜索,我在这里找到了自己问题的答案!: http://ruby.fgcu.edu/courses/mpenderg/ism3230Notes/jlist.html
根据那里的建议,我做了以下事情:
在设计选项卡中,通过从swing控件框拖动到JPanel来创建JList。右键单击JList框,选择Change Variable Name,并将该框命名为有意义的(我称之为我的列表框)
在设计选项卡的属性框中,单击“模型”按钮。将出现“模型选项”窗格。在顶部的下拉框中选择“自定义代码”,然后键入
new DefaultListModel()
在“listbox.setModel”框中。
我已经定义并填充了一个名为routeList []的10元素String数组。在initComponents之后,我添加了以下代码:
DefaultListModel routesmodel = (DefaultListModel)listbox.getModel();
for(int x=0;x<10;x++){
routesmodel.addElement(routeList[x]);
}
然后工作 - 我得到了一个可滚动的JList框,里面填充了数据!
答案 1 :(得分:0)
这是NetBeans生成的代码:
jList.setModel(new AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
public int getSize() { return strings.length; }
public String getElementAt(int i) { return strings[i]; }
});