繁体   English   中英

如何在JScrollPane中添加双击功能?

[英]How to add Double-click capability in JScrollPane?

我正在使用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 ...上面的方法永远不会触发...谢谢。

您的问题是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
        }
    }
});

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

尝试这个 :

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

代替 :

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

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

看起来您的滚动列表中显示了一个JList。 JList使用MouseListener,因此它将处理MouseEvent。 如果要双击JList进行一些处理,则将MouseListener添加到JList。

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

OK ..我已修复它,实际上我在错误的类中添加了MouseListener 我只是遵循了这个练习 ,就实现了我想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM