簡體   English   中英

有沒有辦法將雙擊動作監聽器添加到 JScrollPane 上?

[英]Is there a way to add a double click action listener onto a JScrollPane?

我一直在編寫以下代碼,但無法雙擊 JScrollPane。 這是我的代碼: 我的代碼

但是,使用它會引發錯誤:無法將 JScrollPanes 強制轉換為 JLists。 此外,當單擊表格而不是單元格本身時會發生這種情況。 我真的不確定如何在我單擊單元格時對 JScrollPane 做出反應的動作偵聽器。 有沒有人有任何想法?

鼠標事件被傳遞給您單擊的組件。

如果該組件沒有鼠標偵聽器,則將事件向上傳遞到父組件,直到找到具有鼠標偵聽器的組件。

默認情況下,Swing 將 MouseListener 添加到 JList(例如處理單擊列表中的項目),因此該事件永遠不會傳遞到滾動窗格。

此外,當單擊表格而不是單元格本身時會發生這種情況。

不知道這是什么意思。 什么是“表格”,什么是“單元格”? 聽起來您正在將 JTable 添加到滾動窗格,而不是 JList。

在任何情況下,如果您想在 JList(已添加到 scrollPane 的視口)上偵聽鼠標事件,則需要將MouseListener添加到JList 所以基本代碼是這樣的:

JList list = new JList(...);
list.addMouseListener(...);
JScrollPane scrollPane = new JScrollPane( list );
frame.add( scrollPane );

現在在您的MouseListener中, MouseEvent的來源將是JList

另請注意,在您的偵聽器中,您可以直接從 JList 中獲取所選項目的值:

JList list = (JList)mouseEvent.getSource();
System.out.println( list.getSelectedValue() );
JList list = new JList(...);
list.addMouseListener(...);
JScrollPane scrollPane = new JScrollPane( list );
frame.add( scrollPane );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM