java - 获取 JList 组件时遇到问题

标签 java swing jlist

获取 JList getSelectedIndicesgetComponents 时出现问题。显示的代码被包装到按钮的 actionPerformed -> ActionListener 中。

这是我的代码:

public class PanelLeft extends JPanel {

    private DefaultListModel<String> dlm;
    private JList<String> list;
    
    public PanelLeft() {
        
        dlm = new DefaultListModel<String>();
        dlm.addElement("FOL");
        dlm.addElement("SSII");
        dlm.addElement("EEDD");
        dlm.addElement("Marcas");
        dlm.addElement("BBDD");
        dlm.addElement("Programación");
        
        list = new JList<String>(dlm);
        list.setFixedCellWidth(200);
        
        
        JScrollPane jsp = new JScrollPane(list);
        jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        
        add(jsp);
    }

    public JList<String> getList() {
        return list;
    }
}

对于ActionListener

class ControlToRight implements ActionListener {

    private PanelLeft pl;
    private PanelRight pr;
    
    public ControlToRight(PanelLeft panL,PanelRight panR) {
        pl = panL;
        pr = panR;
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if(pl.getList().getSelectedValuesList() != null) {
            for(int i : pl.getList().getSelectedIndices()) {
                pr.getList().add(pl.getList().getComponent(i));
            }
        }
    }
}

它应该将左侧面板列表 (pl) 中的组件添加到右侧面板列表 (pr)。

实际结果什么都没有。它什么也没做,没有ArrayIndexOutOfBounds,什么也没有。它甚至不会跳转到 for 循环。

最佳答案

您没有看到任何内容的原因是您尚未将 ControlToRight(ActionListener) 添加到任何列表上的监听器列表中。

更改:

public ControlToRight(PanelLeft panL,PanelRight panR) {
    pl = panL;
    pr = panR;
    pl.getList().addActionListener(this);
    pr.getList().addActionListener(this);
}

关于java - 获取 JList 组件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56228180/

相关文章:

java - 登录后重定向到所需位置

java - 非公开课放在哪里?

Java 不释放 oracle 游标

java - 如何在不关闭套接字的情况下通过套接字发送图像?

java - 使用 setSelectedIndices 进行 JList 搜索始终选择第一项

java - 将组件添加到 JPanel

java - Swing 。用 JList 填充 JScrollPane

java - 如何使用 Java 中的具体泛型调用 Kotlin 方法?

java - 自动设置 JPanel 的最小尺寸

java - 将对象添加到 Swing 组件时,Java 在哪里复制和存储对象?