麻烦获取JList组件

时间:2019-05-20 21:06:26

标签: java jlist

获取JList getSelectedIndices和getComponents时遇到问题。显示的代码被包装到按钮的actionPerformed-> actionListener中。

这是我的代码

公共类PanelLeft扩展了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) {
        //System.out.println(pl.getList().isSelectionEmpty());
        if(pl.getList().getSelectedValuesList() != null) {

            for(int i : pl.getList().getSelectedIndices()) {

                pr.getList().add(pl.getList().getComponent(i));

            }

        }

    }

}

应将左侧面板JList(pl)中的组件添加到右侧面板JList(pr)中。 实际结果什么都没有。它没有任何作用,没有arrayIndexOutOfBounds,没有任何作用。它甚至没有跳入for循环。

1 个答案:

答案 0 :(得分:0)

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

更改:

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