获取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循环。
答案 0 :(得分:0)
未看到任何内容的原因是因为您尚未将ControlToRight(ActionListener)添加到任何列表中的侦听器列表中。
更改:
public ControlToRight(PanelLeft panL,PanelRight panR) {
pl = panL;
pr = panR;
pl.getList().addActionListener(this);
pr.getList().addActionListener(this);
}