Вам нужно использовать Listener, и он помещается в метод инициализации.
Когда вы щелкаете по строке в таблице, вы затем вызываете некоторый метод, который выполняет желаемое поведение. Мы разместили код, который при выборе строки таблицы переходит на новый экран. Мы называем наши экраны blablaPane, прежде чем мы перейдем к навигации, мы устанавливаем пару статических переменных, чтобы значения можно было использовать на следующем экране.
private void toChildView() throws IOException{
stage = (Stage)parentTVPane.getScene().getWindow();// pane you are ON
childTVPane = FXMLLoader.load(getClass().getResource("childtableview.fxml"));// pane you are GOING TO
Scene scene = new Scene(childTVPane);// pane you are GOING TO
scene.getStylesheets().add(getClass().getResource("diary.css").toExternalForm());
stage.setScene(scene);
stage.setTitle("Diary Entries by Date Entered and Title");
stage.show();
stage.sizeToScene();
stage.centerOnScreen();
}
private void showTableDataDetails(ParentModel info) throws IOException{
if (info != null) {
info = (ParentModel) ptable.getSelectionModel().getSelectedItem();
strMONTH = info.getPMonth();
strYEAR = info.getPYear();
toChildView();
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
ReadFromParent();
} catch (SQLException ex) {
Logger.getLogger(ParentTableViewController.class.getName()).log(Level.SEVERE, null, ex);
}
ptable.getSelectionModel().selectedItemProperty().addListener((ObservableValue<? extends ParentModel>
observable,ParentModel oldValue, ParentModel newValue) -> {
try {
showTableDataDetails((ParentModel) newValue); // When a row of the table is Selected call
// Proper Construction // showTableDataDetails method
} catch (IOException ex) {
Logger.getLogger(ParentTableViewController.class.getName()).log(Level.SEVERE, null, ex);
}
});
}