我有一个JXHyperlink列表,我需要逐一检索它们,并将其添加到面板中
代码是:
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没有添加它们。
您混淆了List
和JList
。List#add是集合中固有的,它向自身添加了一个Object。JList#add来自Container,并向Container添加了一个组件。所以Jlist#添加它的类似JPanel#添加
问题是,您将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
的面板
有关更多详细信息,请参阅如何使用列表,特别是创建模型和编写自定义单元格渲染器