[英]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.