我有一个带有JLabel[][]
数据的 JTable。现在我想检测对 JLabel 或表格单元格的双击(但仅在其中一列中)。如何分别在 JLabel 表格单元格上添加 Action/MouseListener?
问问题
52292 次
2 回答
67
怎么样:
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
}
}
});
于 2009-09-04T09:16:52.923 回答
27
基本上与已经接受的建议相同,除了:
a) 你应该处理 mousePressed,而不是 mouseClicked。只有在同一像素位置生成 mousePressed 和 mouseReleased 事件时才会触发 mouseClicked 事件。如果用户在双击时将鼠标移动甚至 1 个像素,您将不会获得预期的双击。
b) 此外,您可能需要考虑使用 columnAtPoint() 和 rowAtPoint() 方法来获取单击的单元格。尽管在这种情况下它可能没有什么不同,但如果您尝试使用 MouseListener 进行鼠标右键单击,这将很重要,因为选择不会改变。因此,如果您养成使用此方法的习惯,将来就不会出现问题。
于 2009-09-04T23:26:05.140 回答