我有以下数组:
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>
这就是如何选择数组中的第7个元素,尽管我希望JList
只显示除null之外的值的元素。
答案 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代替