正在从JList检索特定项目



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

您混淆了ListJList。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的面板

有关更多详细信息,请参阅如何使用列表,特别是创建模型和编写自定义单元格渲染器

相关内容

  • 没有找到相关文章

最新更新