簡體   English   中英

JLabel 或 JTable 單元格上的 ActionListener

[英]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.

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