【问题标题】:Display items in JList在 JList 中显示项目
【发布时间】:2012-11-30 08:49:25
【问题描述】:

我有 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);

【问题讨论】:

    标签: java swing jlist


    【解决方案1】:

    所以我的理解是您只想更新 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();
    

    我希望这回答了你的问题。

    【讨论】:

      猜你喜欢
      • 2015-05-19
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2020-06-02
      相关资源
      最近更新 更多