繁体   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