首页 > 解决方案 > 使用 selectedIndex 在两个 JList 之间移动类的对象

问题描述

试图将一个类的对象从一个 JList 移动到另一个具有 SelectedIndex 的 JList。

已尝试阅读 Java 教程,但我似乎无法找到我正在寻找的内容。

目前,我尝试发送 customerList JList 并获取选择的值/索引,然后直接将其添加到所需的 JList 但只生成数组错误并告诉我索引为-1。

我试着这样做

public void moveToQ1() {

    index = customerList.getSelectedIndex();
    if (index != -1) {

        browsing.dequeue(customerList);
        q1.enqueue(browsing, customerList, queue1, index);

    }
}

调用从浏览移动到 queue1 的函数

public void enqueue(QueLine queline, JList list1, JList list2, int index) {

    DefaultListModel<Customer> browseModel = (DefaultListModel<Customer>) list1.getModel();
    DefaultListModel<Customer> queueModel = (DefaultListModel<Customer>) list2.getModel();

    int selectedIndex = index;
    System.out.printf("%d\n", selectedIndex);

    if(selectedIndex >= -1) {
        queueModel.addElement(browseModel.getElementAt(selectedIndex));
    }


}

如果我在 browseModel 中有 3 个对象并选择第二个对象并按下按钮移动。第二个对象将从browseModel 中删除,但不会添加到queueModel,而是将browseModel 中的第三个对象添加到queueModel。

此外,如果我尝试将最后添加的对象移动到 browseModel 到 queueModel,我会得到一个“ArrayIndexOutofBoundsException”

如果我能指出它的工作方向,我将不胜感激。

编辑:在第一个代码示例中切换入队和出队调用的位置,问题就消失了。

标签: javaswingjlistselectedindexdefaultlistmodel

解决方案


推荐阅读