Проблемы с получением компонентов JList - PullRequest
0 голосов
/ 21 мая 2019

Проблемы с получением 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 голосов
/ 22 мая 2019

Причина, по которой вы ничего не видите, заключается в том, что вы не добавили ControlToRight (ActionListener) в список слушателей в любом списке.

Изменение:

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