[英]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());
}
}
}
});
PlayListScrollPane
是JScrollPane
...上面的方法永遠不會觸發...謝謝。
您的問題是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.