TableCell, getting its position in TableView

2020-04-17 05:28发布

问题:

How can I get position of TableCell in class implementation so I can do something like this: ?

@Override
public void updateItem(Integer item, boolean empty) {
    super.updateItem(item, empty);

int x = thisCellColumnNumber();
int y = thisCellRowNumber();

if((x == 2) && (y == 3))
   setStyle(".....");

回答1:

You can get the actual TableColumn with this.getTableColumn();. If you really need the index, you could do

TableColumn<...> column = getTableColumn();
int colIndex = getTableView().getColumns().indexOf(column);

which is a bit ugly (and slow). However, just knowing the column should be enough. (Additionally, you really "know this already"; your table cell comes from a table cell factory, which is attached to a column; so you can always figure the column index and pass it to the cell when you create it.)

The row index is just

this.getIndex();

See the Javadocs for all available methods.