JList在Java中显示空行

时间:2013-11-18 13:19:15

标签: java swing

我有以下数组:

static String[] nameData = new String[100];

一个JList,显示数组的内容:

rightPanel.add(Box.createRigidArea(new Dimension(20, 20)));
final JList list = new JList(nameData);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
list.setVisibleRowCount(-1);
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(250, 80));
listScroller.setAlignmentX(LEFT_ALIGNMENT);
rightPanel.add(listScroller);

但是,例如,当数组中的第一个插槽被填充且休息值为null时,JList仍将它们显示为空行并让您选择它(我在下面添加了一个图像)。 / p>

7th element in array

这就是如何选择数组中的第7个元素,尽管我希望JList只显示除null之外的值的元素。

3 个答案:

答案 0 :(得分:0)

我认为你需要阅读JList的教程。

您将new String[100]添加到列表中,因为它有100个值。您可以在添加到JList或ListModel之前过滤数组,以获取notNull和notEmpty值。

答案 1 :(得分:0)

如果您不想显示空值/空值,您可以通过删除空条目或更优选的选项来创建另一个String,使用DefaultListModel

创建另一个字符串

int i=0;
for(i=0;i<nameData.length;i++){
    if(nameData[i]==null) break;   // count number of elements
}
String[] myString = new String[i];  // declare string
for(i=0;i<myString.length;i++){
    myString[i] = nameData[i];      // copy
}
// Create JList
final JList list = new JList(nameData);

或者

使用DefaultListModel

DefaultListModel model = new DefaultListModel();
for(int i=0;i<nameData.length;i++){
    if(nameData[i]==null) break;
    model.addElement(nameData[i]);   // build defaultlistmodel
}
final JList list = new JList();
list.setModel(model);

答案 2 :(得分:0)

那是因为你使用了100个null元素的数组,你可以使用Vector代替