我想从JavaFX TableView获取所选行。奇怪的是,当我点击一次行时,事件会被触发,但不是第二次或第三次。为什么?还有另一种处理此事件的方法(例如,带有@FXML注释的正常事件处理程序)?
public PersonController {
private ObservableList<Person> personData = FXCollections.observableArrayList();
@FXML
private TableView<Person> personTable;
@FXML
private TableColumn<Person, String> firstNameColumn;
@FXML
private TableColumn<Person, String> lastNameColumn;
@FXML
private void initialize() {
personTable.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) -> {
if (personTable.getSelectionModel().getSelectedItem() != null) {
showPersonDetails(newValue);
}
});
}
}
FXML
<TableView fx:id="personTable" layoutX="14.0" layoutY="14.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn fx:id="firstNameColumn" prefWidth="75.0" text="Vorname" />
<TableColumn fx:id="lastNameColumn" prefWidth="75.0" text="Nachname" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
答案 0 :(得分:1)
找到解决方案。我必须在我的JPA域类中初始化属性 所以而不是:
private IntegerProperty id;
你必须写:
private IntegerProperty id = new SimpleIntegerProperty();