【发布时间】:2011-06-15 07:11:36
【问题描述】:
当用户单击JTable 上的单元格时,我如何确定被单击单元格的行和列?我如何在JLabel 中显示这些信息?
【问题讨论】:
标签: java swing jtable listener
当用户单击JTable 上的单元格时,我如何确定被单击单元格的行和列?我如何在JLabel 中显示这些信息?
【问题讨论】:
标签: java swing jtable listener
我发现当列被隐藏/重新排序时columnAtPoint 返回可见列索引,这不是我需要的。对我有用的代码是
int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint()));
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint()));
【讨论】:
它对我有用!!!
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
int row = jTable1.rowAtPoint(evt.getPoint());
int col = jTable1.columnAtPoint(evt.getPoint());
if (row >= 0 && col >= 0) {
}
}
});
【讨论】:
现有答案有效,但如果您不启用单元格选择,还有一种替代方法可能会更好。在您的 MouseListener 中,执行以下操作:
public void mouseClicked(java.awt.event.MouseEvent event) {
int row = theTable.rowAtPoint(event.getPoint());
int col = theTable.columnAtPoint(event.getPoint());
// ...
【讨论】:
您可以在 JTable 上使用以下方法来检索所选单元格的行和列:
int rowIndex = table.getSelectedRow();
int colIndex = table.getSelectedColumn();
并在表中添加SelectionListener 以在选择表时捕获事件。
【讨论】:
你试过addMouseListener()吗?我希望你正在使用 Swing 的 JTable。
【讨论】: