我已经将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/

10-14 12:05