从JList中检索特定项

时间:2013-08-03 09:29:26

标签: java swing jlist defaultlistmodel

我有一个JXHyperlinks列表,我需要逐个检索它们并添加到面板

代码是:

for(int i=1; i<=lcol-1;i++)
{
    a2=sheet.getCell(i,0);
    stringy=a2.getContents();
    testlink= new JXHyperlink(new Action(stringy));
    list.add(testlink);

}
for(int i=0;i<list.getModel().getSize();i++)
{
    panel2.add(list.getModel().getElementAt(i));

}

第一个循环是创建具有各自名称的链接列表(取自excel文件)。 第二个循环采用预先制作的列表并将每个对象添加到面板。 问题是id不会添加它们。

2 个答案:

答案 0 :(得分:1)

您将ListJList混淆。 List #add从Collection中加入,并向其自身添加一个Object。 JList #add从Container中加入,并将一个组件添加到Container。所以Jlist#就像JPanel#add

一样

答案 1 :(得分:0)

问题是,您是将JXHyperlink组件直接添加到列表中,而不是列表模型。

for(int i=1; i<=lcol-1;i++)
{
    a2=sheet.getCell(i,0);
    stringy=a2.getContents();
    testlink= new JXHyperlink(new Action(stringy));
    // I'm the JList, not it's model :P
    list.add(testlink);
}
// I bet nothing exists in the model
for(int i=0;i<list.getModel().getSize();i++)
{
    panel2.add(list.getModel().getElementAt(i));
}

这不是列表应该如何工作的。

相反,请将String链接添加到ListModel,并使用JXHyperlink作为ListCellRenderer的基础,然后添加JXHyperlink的实例列表中每个String的面板

有关详细信息,请参阅How to use lists,特别是Creating a modelWriting a Custom cell Renderer