JLabel 或 JTable 单元格上的 ActionListener

2022-09-01 19:38:56

我有一个JTable作为数据。现在我想检测双击JLabel或表单元格(但仅在其中一列中)。如何在JLabel上分别在表格单元格上添加操作/鼠标列表?JLabel[][]


答案 1

怎么样:

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
    }
  }
});

答案 2

基本上与已经接受的建议相同,除了:

a)您应该处理鼠标按下,而不是鼠标点击。仅当在同一像素位置生成 mousePressed 和 mouseRelease 事件时,才会触发 mouseClicked 事件。如果用户在双击时将鼠标移动甚至1个像素,您将无法获得预期的双击。

b) 您可能还需要考虑使用 columnAtPoint() 和 rowAtPoint() 方法来获取单击的单元格。虽然在这种情况下可能不会有任何区别,但如果您尝试使用MouseListener进行鼠标右键单击,这将很重要,因为选择不会更改。因此,如果您养成了使用此方法的习惯,那么将来就不会有问题。