我想知道从ArrayList构建JList时是否有一种方法可以显示JList项目的特定属性。
我只想选择执行此操作时将显示在列表中的属性:
JList elementsList = new JList(elementsArrayList.toArray()); elementsScrollPane.setViewportView(elementsList); 感谢您提供的帮助或参考!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中,如果你想从一个ArrayList构建JList,并且希望JList显示ArrayList中对象的特定属性,你可以通过创建一个自定义的ListModel或者使用DefaultListModel并重写其数据获取方法来实现。这样,你就可以控制JList显示每个对象的哪个属性。
以下是一个简单的示例,假设你有一个Element
类,它有多个属性,但你只想在JList中显示Element
的displayName
属性:
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
属性了。