Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java: how to select only one cell in a jtable and not the whole row

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.

like image 474
shaw Avatar asked Jun 23 '11 08:06

shaw


2 Answers

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.

like image 116
JB Nizet Avatar answered Oct 10 '22 00:10

JB Nizet


myTable.setRowSelectionAllowed(false);
like image 34
mKorbel Avatar answered Oct 10 '22 00:10

mKorbel