【问题标题】:How to add Double-click capability in JScrollPane?如何在 JScrollPane 中添加双击功能?
【发布时间】:2014-01-09 05:17:54
【问题描述】:

我正在使用 JScrollPane 并通过 Model.. 填充它。现在我想添加 Double CLick Listener 这就是我的尝试...

  PlayListScrollPane.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent mouseEvent) {
                JList theList = (JList) mouseEvent.getSource();
                if (mouseEvent.getClickCount() == 2) {
                    int index = theList.locationToIndex(mouseEvent.getPoint());
                    if (index >= 0) {
                        Object o = theList.getModel().getElementAt(index);
                        System.out.println("Double-clicked on: " + o.toString());
                    }
                }
            }
        });

PlayListScrollPaneJScrollPane... 上述方法永远不会启动...... 谢谢。

【问题讨论】:

    标签: java swing jscrollpane double-click mouselistener


    【解决方案1】:

    您的问题是您的 clickCount 应该是来自类的变量,而不是在侦听器内部。就像:

    private clicksCount = 0;
    

    如果列表也已实例化,您也可以访问该列表。那么:

    PlayListScrollPane.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent mouseEvent) {
            clicksCount++;
    
            if (clicksCount == 2) { //Or clicksCount%2==0
                int index = myJList.locationToIndex(mouseEvent.getPoint());
                if (index >= 0) {
                    Object o = theList.getModel().getElementAt(index);
                    System.out.println("Double-clicked on: " + o.toString());
                }
                clicksCount=0;//If you use clickCounts%2==0 you don't need this line
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

      您可能应该将侦听器添加到视口而不是滚动窗格

      试试这个:

      PlayListScrollPane.getViewport().addMouseListener(new MouseAdapter() { ...
      

      而不是:

      PlayListScrollPane.addMouseListener(new MouseAdapter() { ... 
      

      【讨论】:

        【解决方案3】:

        JList theList = (JList) mouseEvent.getSource();

        看起来您在滚动窗格中显示了一个 JList。 JList 使用 MouseListener,因此它将处理 MouseEvents。如果您想通过双击对 JList 进行一些处理,请将 MouseListener 添加到 JList。

        实际上请查看List Action 以获得更好的方法。它将允许您创建一个动作,然后支持通过使用双击或 Enter 键来调用该动作,因为设计良好的 GUI 应该通过鼠标或键盘工作。

        【讨论】:

          【解决方案4】:

          好的..我把它修好了,实际上我在错误的类中添加了MouseListener。我只是遵循了这个tut 并实现了我想要的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-07-22
            • 1970-01-01
            • 2013-11-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多