【发布时间】:2021-07-10 20:43:06
【问题描述】:
我在 JScrollPane 中有一个带有 JList 的摇摆 GUI,并且我已经用字符串填充了它。我想从列表中获取选定的字符串,但每次它返回-1。我还制作了不起作用的选择侦听器。从这里的帖子中查找其他人,但无论我点击多少,听众都不会被解雇。选择单选模式。 这是按钮方法。值为空,索引为-1。
loadSongBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index=list.getSelectedIndex();
System.out.println("test "+list.getSelectedValue());
String name=(String)list.getModel().getElementAt(index); //works if i put a number
}
});
这里是初始化:
private void initList(){
String[] songNames = extractSongs();
JList songsList=new JList(songNames); //tried to see if the problem is here
this.list=songsList;
}
private void createUIComponents() {
initList();
songListPane = new JScrollPane(list);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
这是 SelectionListener 以防万一
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
JList<String> lst = (JList<String>) e.getSource();
String selection = lst.getSelectedValue();
System.out.println(selection);//doesnt go into the method at all in debug
}
}
});
【问题讨论】:
-
您可能引用的 JList 与带有歌曲名称的 JList 不同。发布minimal reproducible example,以便我们将代码复制到我们的 IDE、运行它并查看结果来帮助您。
标签: java swing indexoutofboundsexception jlist listselectionlistener