我已经将Arraylist放入JList中,并且当在Jlist上单击鼠标时,我想获取Arraylist的值/索引。
我已经尝试过使用这些行,但是对于单击的每个元素,它始终在控制台上显示-1作为索引。
这是我的代码的一部分。
list2.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
JPanel MousePanel=new JPanel();
JList listp=new JList(PatientDetailArlist.toArray());
int index = listp.getSelectedIndex();
System.out.println("Index Selected: " + index);
String sp = (String) listp.getSelectedValue();
System.out.println("Value Selected: " + sp.toString());
MousePanel.add(listp);
tab.add("tab4",MousePanel);
visibleGui();
}
最佳答案
您将一个MouseListener添加到您的JList的“ list2”中。
list2.addMouseListener(new MouseListener(){
但是随后由于某种原因在代码中创建了新的JList? JList在GUI上不可见,因此它不可能具有选定的索引。
JList listp=new JList(PatientDetailArlist.toArray());
int index = listp.getSelectedIndex();
您在侦听器代码中所需的全部是:
int index = list2.getSelectedIndex();
甚至更好的是获取从MouseEvent单击的JList组件:
JList list = (JList)e.getSource();
int index = list.getSelectedIndex();
但是,这仍然不是一个好的解决方案。如果用户使用键盘选择一个项目怎么办? GUI的正确设计应允许用户使用鼠标或键盘。
因此,您不应该使用MouseListener。相反,您应该使用ListSelectionListener来侦听列表中项目的选择更改。
阅读有关How to Write a ListSelectionListener的Swing教程中的部分,以获取更多信息和示例,以帮助您入门。
关于java - 如何通过mouselistener获取Arraylist的索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47437680/