0

我有一个 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 没有添加它们。

4

2 回答 2

1

ListJList. List#add 是从 Collection 继承而来的,它给自己添加了一个 Object。JList#add 继承自 Container 并将组件添加到 Container。所以 Jlist#add 它就像 JPanel#add

于 2013-08-04T00:20:05.480 回答
0

The problem is, you are adding the JXHyperlink components directly to the list, not the list model.

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));
}

This is not how lists should work.

Instead, add the link String to the ListModel and use the JXHyperlink as a bases for a ListCellRenderer, then add an instance of JXHyperlink to the panel for each String in the list

See How to use lists for more details, in particular, Creating a model and Writing a Custom cell Renderer

于 2013-08-03T22:56:39.207 回答