开发者社区 问答 正文

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

我想知道从ArrayList构建JList时是否有一种方法可以显示JList项目的特定属性。

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

JList elementsList = new JList(elementsArrayList.toArray()); elementsScrollPane.setViewportView(elementsList); 感谢您提供的帮助或参考!

展开
收起
被纵养的懒猫 2019-10-09 16:42:46 399 分享 版权
阿里云 AI 助理回答

在Java中,如果你想从一个ArrayList构建JList,并且希望JList显示ArrayList中对象的特定属性,你可以通过创建一个自定义的ListModel或者使用DefaultListModel并重写其数据获取方法来实现。这样,你就可以控制JList显示每个对象的哪个属性。

以下是一个简单的示例,假设你有一个Element类,它有多个属性,但你只想在JList中显示ElementdisplayName属性:

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class CustomJListExample {
    public static void main(String[] args) {
        // 假设你有一个Element类,它有一个名为displayName的属性
        List<Element> elementsArrayList = new ArrayList<>();
        elementsArrayList.add(new Element("Element 1"));
        elementsArrayList.add(new Element("Element 2"));
        elementsArrayList.add(new Element("Element 3"));

        // 使用DefaultListModel并填充你想要显示的属性
        DefaultListModel<String> model = new DefaultListModel<>();
        for (Element element : elementsArrayList) {
            model.addElement(element.getDisplayName());
        }

        JList<String> elementsList = new JList<>(model);
        JScrollPane elementsScrollPane = new JScrollPane(elementsList);

        // 添加到你的GUI框架中,比如JFrame
        JFrame frame = new JFrame("Custom JList Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(elementsScrollPane);
        frame.pack();
        frame.setVisible(true);
    }

    static class Element {
        private String displayName;

        public Element(String displayName) {
            this.displayName = displayName;
        }

        public String getDisplayName() {
            return displayName;
        }
    }
}

在这个例子中,我们首先创建了一个Element类的实例列表。然后,我们没有直接将Element对象转换为数组添加到JList中,而是创建了一个DefaultListModel<String>,遍历elementsArrayList,并使用每个Element对象的getDisplayName()方法获取要显示的属性,将其添加到模型中。最后,用这个模型初始化JList,这样JList就会显示每个元素的displayName属性了。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: