ArrayList 到 JList 并显示特定 属性 个对象

ArrayList to JList and display specific property of the objects

我想知道当 ArrayList.[=14= 构建 JList 的项目时,是否有办法显示特定的 属性 ]

我只想选择 属性 执行此操作时将显示在列表中:

JList<String> elementsList = new JList(elementsArrayList.toArray());
elementsScrollPane.setViewportView(elementsList);

感谢您给我的任何帮助或参考!

1.

最简单的方法是

首先扫描您的输入元素列表以找到您想要显示的 属性

String[] properties = elementsArrayList.stream().map(element::getStringProperty).toArray()

然后将其用作挥杆控制的输入模型 新 JList(属性)

  1. 规范的、类似 Swing 的是

根据您拥有的原始对象定义 JList(通过 ListModer 或按原样,通过数组)

new JList(elementsArrayList)

然后创建您的 ListCellRenderer class,它将显示感兴趣的 属性 作为标签并将此渲染器设置到列表

jList.setCellRenderer(youCellRedererInstance)

你可以设置一个ListCellRenderer.

本质上,你写一个函数

public Component getListCellRendererComponent(JList<?> list,
    Object value, int index, boolean isSelected, boolean cellHasFocus)

其中 returns 个 Component。为了使事情更简单,您可以扩展 DefaultListCellRenderer 并在从列表元素中提取要显示的值后调用它的实现,即

{
    if (value instanceof YourClass) {
        YourClass ob = (YourClass) value;
        return super.getListCellRendererComponent(list, ob.getProperty(), index, isSelected, cellHasFocus);
    }
    return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}

然后你set your renderer到你的elementList