【发布时间】:2019-10-07 06:02:06
【问题描述】:
获取JList getSelectedIndices 和getComponents 时遇到问题。显示的代码被包装到按钮的 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 循环。
【问题讨论】:
-
您使用的 JList 错误。请阅读documentation 和tutorial。
-
代码已更新,因为我看不出 JList 的使用有什么问题,我的老师也没有。对不起,这里的新手,现在了解有据可查的帖子的重要性。
-
列表包含数据,而不是组件。要将数据从一个列表移动到另一个列表,请将其从第一个列表的模型中删除,然后将其添加到第二个列表的模型中。