当前位置: 首页 > 知识库问答 >
问题:

如何从JList中按项目被选中的顺序获取项目?

宁侯林
2023-03-14

我有一个启用了multiple_interval_selection的JList,我希望将项的选择顺序传递给另一个进程。

我尝试在JList上使用MouseListener并检查getClickCount()==1是否将其添加到数组中,但是,这不会添加位于选定项之下的新项,它只添加位于JList中当前选定项之上的项。

private class ListBoxListener implements ListSelectionListener, MouseListener {

      @Override
      public void valueChanged(ListSelectionEvent e) {

         if(e.getSource().equals(aList)) {

            System.out.println(aList.getSelectedValue());
         }
      }

      @Override
      public void mouseClicked(MouseEvent arg0) {
         // TODO Auto-generated method stub
         if(arg0.getClickCount() == 1) {
            JOptionPane.showMessageDialog(null, aList.getSelectedValue());
         }
      }
}

我要做的事情有什么明显的错误吗?

共有1个答案

宰父焕
2023-03-14

您应该试试这段代码

    JFrame frame = new JFrame("JList Test");
    frame.setLayout(new FlowLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    String[] selections = {"Java", "C++", "C", "Scala", "JavaScript"};
    JList list = new JList(selections);
    frame.add(new JScrollPane(list));
    frame.pack();
    frame.setVisible(true);

    MouseListener mouseListener = new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent mouseEvent) {

            if (mouseEvent.getClickCount() == 1) {
                int index = list.locationToIndex(mouseEvent.getPoint());
                if (index >= 0) {
                    Object obj = list.getModel().getElementAt(index);
                    JOptionPane.showMessageDialog(null, obj);

                }
            }
        }
    };
    list.addMouseListener(mouseListener);

}
 类似资料:
  • 当用户点击按钮时,我试图从JList中删除选中的项目。 目前我有这样的东西: 当我单击按钮删除项目时,出现以下错误: 如何修复此错误,以及我的代码是否删除了多个项目?

  • 我正在创建一个屏幕,上面有四个列表。基本上是两对列表,您可以在对中的一个列表上选择行,然后将它们移动到对中的另一个列表。 查看文档,我需要为每个列表提供一个ListSelectionModel来确定选择了哪些行。我将使用[Sel]或[Des]按钮来执行实际的传输。 文档和示例说我需要一个ListSelectionListener,但是,由于在用户单击按钮之前我不会访问模型,所以我实际上需要一个监听

  • 问题内容: 谁能告诉我从我删除所选项目的简便方法? 我在Google和此处进行了搜索,但发现了很多方法。我应该使用哪种方式? 问题答案: 正如@Andreas_D所说,以数据为中心,更抽象的ListModel是解决方案。这可以是DefaultListModel。您应该在JList中显式设置模型。所以(感谢@kleopatra发表评论): DefaultListModel中有几种方法。 顺便说一句,

  • 问题内容: 是否可以按照插入顺序从Python字典中检索项目? 问题答案: 如果您使用的是CPython 3.6+(或其他任何Python实现的Python 3.7+),则默认情况下,标准Python会执行此操作。 在旧版Python上,您可以使用。

  • Project的构建没有任何错误,但是当我进入exploper并查找文件夹时,它没有生成。我尝试清理和构建,无效缓存和重新启动,但它不起作用。如何获取r.java文件? 这是构建日志 我在下面提到了这样的线程,并尝试了一切,但没有任何工作。 这个有什么已知的bug吗?

  • 我在Netbeans构建了一个Java项目。我有一个表单,表单内部有一个jList,其中填充了一个对象(Favorite)。我也有一个按钮,我想当我按下按钮删除选定的项目在jList。 我正在尝试以下代码,但我得到一个错误。 我得到以下错误: 线程“AWT-EventQueue-0”中出现异常Java . lang . classcastexception:Java . lang . string