【问题标题】:How to get the index of an Arraylist Through mouselistener?如何通过 mouselistener 获取 Arraylist 的索引?
【发布时间】:2017-11-22 14:53:55
【问题描述】:

我已将 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();
                }

【问题讨论】:

  • 代码创建了一个新的listp,因此此时无法进行交互。尝试分离组件的创建并与之交互。

标签: java swing arraylist jlist mouse-listeners


【解决方案1】:

您将 MouseListener 添加到“list2”,这是您的 JList。

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 教程部分,了解更多信息和示例,以帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2019-10-15
    相关资源
    最近更新 更多