在JavaFX中获取行号

在JavaFX中获取行号,java,javafx,Java,Javafx,我想知道是否有任何方法可以获取JavaFXTableView的行号 @FXML private TableView tableView; private void table() { TableColumn fn = new TableColumn("First Name"); TableColumn ln = new TableColumn("Last Name"); TableColumn age = new TableColumn("Age");

我想知道是否有任何方法可以获取JavaFXTableView的行号

 @FXML private TableView tableView;

 private void table() {

    TableColumn fn = new TableColumn("First Name");
    TableColumn ln = new TableColumn("Last Name");
    TableColumn age = new TableColumn("Age");

    fn.setCellValueFactory(new PropertyValueFactory<TextFileData, String>("First Name"));
    ln.setCellValueFactory(new PropertyValueFactory<TextFileData, String>("Last Name"));
    age.setCellValueFactory(new PropertyValueFactory<TextFileData, String>("Age"));

    tableView.setItems(dataFromTextFile);
    tableView.getColumns().addAll(fn,ln,age);
    ObservableList<TablePosition> selectedCells = tableView.getSelectionModel().getSelectedCells();
    selectedCells.addListener((ListChangeListener.Change<? extends TablePosition > change) -> {
    //do something
    });
  }
例如,我有一个表,它在一个包含10行和3列的文本文件中获取数据,我希望有一个侦听器,它应该能够获取整行数据,并且只获取其行号

 @FXML private TableView tableView;

 private void table() {

    TableColumn fn = new TableColumn("First Name");
    TableColumn ln = new TableColumn("Last Name");
    TableColumn age = new TableColumn("Age");

    fn.setCellValueFactory(new PropertyValueFactory<TextFileData, String>("First Name"));
    ln.setCellValueFactory(new PropertyValueFactory<TextFileData, String>("Last Name"));
    age.setCellValueFactory(new PropertyValueFactory<TextFileData, String>("Age"));

    tableView.setItems(dataFromTextFile);
    tableView.getColumns().addAll(fn,ln,age);
    ObservableList<TablePosition> selectedCells = tableView.getSelectionModel().getSelectedCells();
    selectedCells.addListener((ListChangeListener.Change<? extends TablePosition > change) -> {
    //do something
    });
  }
@FXML private TableView TableView;
私有空表(){
TableColumn fn=新的TableColumn(“名字”);
TableColumn ln=新的TableColumn(“姓氏”);
TableColumn年龄=新TableColumn(“年龄”);
fn.setCellValueFactory(新属性ValueFactory(“名字”);
ln.setCellValueFactory(新属性ValueFactory(“姓氏”);
age.setCellValueFactory(新属性ValueFactory(“age”);
setItems(dataFromTextFile);
tableView.getColumns().addAll(fn,ln,age);
ObservableList selectedCells=tableView.getSelectionModel().getSelectedCells();
selectedCells.addListener((ListChangeListener.Change找到了解决方案!
事实证明,我可以调用setRowFactory生成一个lambda,然后创建一个新的TableRow,并将其设置为setOnMouseClicked事件,我所要做的就是生成
int rowNum=tableview.getSelectionModel().getSelectedIndex

找到了解决方案!
事实证明,我可以调用setRowFactory来生成一个lambda,然后创建一个新的TableRow,并将其设置为setOnMouseClicked事件,从那里我只需生成
int rowNum=tableview.getSelectionModel().getSelectedIndex

听起来很可疑。如果不知道您真正想要实现什么,很难判断这是否是一种合理的方法(可能是,在某些情况下,行上的鼠标手柄是合适的,但通常获取TableView的行号不是其中之一).无论如何,对于你的下一个问题,请提供一个例子来说明你在追求什么,以及它是如何不按预期工作的听起来很可疑..如果不知道你真正想要实现什么,很难判断这是否是一个合理的方法(可能是这样,在某些情况下,行上的鼠标手柄是合适的,但通常获取TableView的行号不是其中之一)。无论如何,对于您的下一个问题,请提供一个演示,说明您所追求的是什么,以及它如何不按预期工作