[英]ActionListener on JLabel or JTable cell
我有一個帶有JLabel[][]
作為數據的 JTable。 現在我想檢測對 JLabel 或表格單元格的雙擊(但僅在其中一列中)。 如何分別在 JLabel 表格單元格上添加 Action/MouseListener?
怎么樣:
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
// do some action if appropriate column
}
}
});
基本上與已經接受的建議相同,只是:
a)您應該處理mousePressed,而不是mouseClicked。 僅當在相同像素位置生成mousePressed和mouseReleased事件時,才會觸發mouseClicked事件。 如果用戶在雙擊時甚至將鼠標移動1個像素,則不會獲得預期的雙擊。
b)另外,您可能需要考慮使用columnAtPoint()和rowAtPoint()方法來獲取單擊的單元格。 盡管在這種情況下它可能沒有什么區別,但是如果您嘗試使用MouseListener進行鼠標右鍵單擊就很重要,因為選擇不會更改。 因此,如果您習慣使用這種方法,那么將來就不會有問題。
正如@camickr 在選項 b 中所說,您應該使用 columnAtPoint() 否則在單元格外部但在表格內部單擊時可能會出現意外行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.