JLabel或JTable单元格上的ActionListener

我有一个带有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进行鼠标右键单击会很重要,因为选择不会更改。 因此,如果您养成使用此方法的习惯,将来就不会有问题。