gpt4 book ai didi

java - 如何将监听器事件添加到由 DefaultListModel 对象添加的 JList 元素?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:55 24 4
gpt4 key购买 nike

我创建了 2 个 JList“addGroupList”和“addApkList”。我正在使用 model.addElement(arrayList1.get(arrayList1.size()-1)); 添加元素到 addGroupList问题是,我想根据 addGroupList 的选定值更新 addApkList。为此,我正在尝试添加事件监听器,以便在选择列表项但事件未触发时我可以采取行动。我该怎么做才能做到这一点?以下是我正在使用的代码。

    model1 = new DefaultListModel();
model2 = new DefaultListModel();

addApkList = new JList(model1);
addGroupList = new JList(model2);

scrollPane1 = new JScrollPane();
scrollPane1.setViewportView(addApkList);
scrollPane2 = new JScrollPane();
scrollPane2.setViewportView(addGroupList);

这样我就定义了 JList。通过以下方式,我将元素添加到 addGroupList

model1.addElement(arrayList1.get(arrayList1.size()-1));

并按照以下方式为其添加了监听器。

addGroupList.addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent lse) {
if (!lse.getValueIsAdjusting()) {
System.out.println("Selection trigerred");
}
}
});

这段代码似乎没有发生任何变化。我做错了什么?我也尝试过以下

model1.addListDataListener(new ListDataListener() {

@Override
public void intervalAdded(ListDataEvent lde) {
System.out.println("ddddddddddd");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void intervalRemoved(ListDataEvent lde) {
System.out.println("ddddddddddd");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void contentsChanged(ListDataEvent lde) {
System.out.println("ddddddddddd");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});

最佳答案

In following way i've added elements to addGroupList

model1.addElement(arrayList1.get(arrayList1.size()-1));

不,你没有。 model1addApkList 而不是 addGroupList 的列表模型:

 addApkList = new JList(model1);

应该是model2.addElement(arrayList1.get(arrayList1.size()-1))

无论如何,我怀疑您期待的是 ListSelectionEvent当您只需将一个项目添加到列表模型时就会被解雇。那不会发生。您需要将添加的项目设置为选中的项目:

Object item = arrayList1.get(arrayList1.size()-1);
model2.addElement(item);
addGroupList.setSelectedValue(item, true);

查看JList.setSelectedValue(Object anObject, boolean shouldScroll)了解更多详情。

关于java - 如何将监听器事件添加到由 DefaultListModel 对象添加的 JList 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com