获取 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
循环。
最佳答案
您没有看到任何内容的原因是您尚未将 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/