in a jTable, I want when a user clicks on a cell, this sentence to be printed on the screen :
I am cell in row X and column Y
where x and Y are the row and column of the clicked cell. But what I am getting is : when I click for example the cell in row 1 and column 4 I get the following :
I am cell in row 1 and column 0
I am cell in row 1 and column 1
I am cell in row 1 and column 2
....
I am cell in row 1 and column N ( N = number of columns)
i.e. the whole row is selected.
this is the code :
public class CustomTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(isSelected) System.out.println("I am cell in row "+row+" and column "+column);
return cell;
}
}
Thanks for any help.
You shouldn't use a cell renderer for this.
Enable cell selection on your table (using setCellSelectionEnabled(true)
), then get the selection model of the table (using getSelectionModel()
), and add a listener on this selection model. Each time an event is triggered, use getSelectedRow()
and getSelectedColumn()
to know which cell is selected.
Note that this will give you the selected cell, which can be modified using the mouse or the keyboard. If you just want to know where the mouse clicked, then see KDM's answer.
myTable.setRowSelectionAllowed(false);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With