java - 显示 JList 中的项目

标签 java swing jlist

我有 2 个 JList 组件。当我单击 JList A 中的某个项目时,JList B 将被填充。

JList 都将显示相同的记录集。 (但是,如果我们单击 JList A 中的某个项目,该项目不应显示在 JList B 中)。我怎样才能做到这一点?

我的工作:

listA.addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent evt) {
        if (evt.getValueIsAdjusting()==false) {             
            listB.setModel(new AbstractListModel() {
                public int getSize() {
                    return allAnimals("Lions").size();
                }
                public Object getElementAt(int index) {
                    return allAnimals("Lions").keySet().toArray()[index];
                }
        });

但是,我无法从 JList B 中删除在 JLIst A 中单击的项目。我怎样才能做到这一点?

根据上面的代码,当我点击JList A时,所有项目都会显示在JList B中。我需要显示除 JList A 上选择的项目之外的所有项目。我怎样才能做到这一点?

allAnimals() 方法的签名;

public Map<String, Animal> allAnimals(String animalName);

最佳答案

所以我的理解是你只想更新 JList 中的内容。我之前完成的方法是创建一个 DefaultListModel 并将其分配给 JList。

DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);

从那里,您可以从列表模型中添加或删除元素,JList 将自动更新。

//add new element to the listmodel
listModel.add(/*index*/ 0, /*random object content*/ "Lions");

//remove specific element
listModel.remove(0);

//remove specific object
listModel.removeElement(someObject);

//remove all elements
listModel.removeAllElements();

我希望回答了您的问题。

关于java - 显示 JList 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843325/

相关文章:

java - 在自己的构造函数中使用对象

Java 组件调整大小 - 检测用户是否调整了窗口大小或以编程方式调整了窗口大小

Java添加类型编写器效果,不会停止整个程序

Java Swing GUI 控件停止,而操作在后端执行

带有 expected = exception 的 Java 测试因断言错误而失败

java - netty-socketio xhr-轮询回归?

java - 为什么当我按 "New Game"时会收到 NullPointerException ?

java - 为满足特定语句的 JList 元素设置前景

java - ListSelectionListener 无法识别 if 条件中的联合

java - 添加到 ListModel 后如何更改 JList 中元素的 View ?