我有一个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不会添加它们。
答案 0 :(得分:1)
您将List
与JList
混淆。 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 model和Writing a Custom cell Renderer