Java - 从String数组创建JList中的列表

时间:2017-09-08 17:47:28

标签: java jlist

我正在使用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属性有关吗?

有人可以告诉我出了什么问题,或者告诉我应该使用哪些代码。

2 个答案:

答案 0 :(得分:0)

经过2天的搜索,我在这里找到了自己问题的答案!:     http://ruby.fgcu.edu/courses/mpenderg/ism3230Notes/jlist.html

根据那里的建议,我做了以下事情:

  1. 在设计选项卡中,通过从swing控件框拖动到JPanel来创建JList。右键单击JList框,选择Change Variable Name,并将该框命名为有意义的(我称之为我的列表框)

  2. 在设计选项卡的属性框中,单击“模型”按钮。将出现“模型选项”窗格。在顶部的下拉框中选择“自定义代码”,然后键入

    new DefaultListModel()

    在“listbox.setModel”框中。

  3. 我已经定义并填充了一个名为routeList []的10元素String数组。在initComponents之后,我添加了以下代码:

  4. 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]; }
    });