JLabel或JTable单元格上的ActionListener

ste*_*ita 21 java swing jtable mouseevent actionlistener

我有一个JTable JLabel[][]作为数据.现在我想检测双击JLabel或表格单元格(但只在其中一列中).如何在JLabel表格单元格上添加Action/MouseListener?

Vin*_*jip 61

怎么样:

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
    }
  }
});
Run Code Online (Sandbox Code Playgroud)


cam*_*ckr 27

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

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

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