簡體   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