There is a table:
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.text.*?> <?import javafx.scene.control.*?> <?import java.lang.*?> <?import javafx.scene.layout.*?> <?import javafx.geometry.Insets?> <?import javafx.scene.layout.GridPane?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> <Pane id="paneMain" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" stylesheets="@style.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> <children> <AnchorPane prefHeight="400.0" prefWidth="600.0"> <children> <Label layoutX="155.0" layoutY="23.0" text="Работа с базой данных библиотеки" textFill="WHITE" AnchorPane.leftAnchor="155.0" AnchorPane.topAnchor="23.0"> <font> <Font size="18.0" /> </font></Label> <TableView id="mainTable" fx:id="mainTable" layoutX="14.0" layoutY="63.0" prefHeight="290.0" prefWidth="426.0" stylesheets="@style.css" AnchorPane.bottomAnchor="47.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="160.0"> <columns> <TableColumn fx:id="columnName" prefWidth="103.0" text="Название книги" /> <TableColumn fx:id="columnAuthor" prefWidth="129.0" text="Автор" /> <TableColumn fx:id="columnYear" prefWidth="69.0" text="Год" /> <TableColumn fx:id="columnGenre" prefWidth="143.0" text="Жанр" /> </columns> <columnResizePolicy> <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> </columnResizePolicy> </TableView> <Button fx:id="buttonAdd" layoutX="459.0" layoutY="63.0" mnemonicParsing="false" onAction="#toSceneAdd" prefHeight="25.0" prefWidth="79.0" text="Добавить" AnchorPane.leftAnchor="459.0" AnchorPane.topAnchor="63.0" /> <Button fx:id="buttonDelete" layoutX="459.0" layoutY="151.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="79.0" text="Удалить" AnchorPane.leftAnchor="459.0" AnchorPane.topAnchor="151.0" /> <Button layoutX="459.0" layoutY="107.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="79.0" text="Изменить" /> </children> </AnchorPane> </children> </Pane> Controller to the table:
package sample; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.TableColumn; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import library.*; import javafx.event.ActionEvent; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TableView; import java.io.IOException; import java.net.URL; import java.sql.SQLException; import java.util.ResourceBundle; import static database.Database.getBooks; public class Controller implements Initializable{ public Button buttonAdd; public TableView<Book> mainTable; public TableColumn<Book,String> columnName; public TableColumn<Book,String> columnAuthor; public TableColumn<Book,Integer> columnYear; public TableColumn<Book,String> columnGenre; public void toSceneAdd(ActionEvent actionEvent) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("/sample/AddNewBook.fxml")); Main.primaryStage.setScene(new Scene(root)); Main.primaryStage.show(); } @Override public void initialize(URL location, ResourceBundle resources) { try { ObservableList<Book> books = FXCollections.observableArrayList(getBooks()); columnName.setCellValueFactory(new PropertyValueFactory<Book, String>("NameBook")); columnAuthor.setCellValueFactory(new PropertyValueFactory<Book,String>("authorBook")); columnGenre.setCellValueFactory(new PropertyValueFactory<Book, String>("genreBook")); columnYear.setCellValueFactory(new PropertyValueFactory<Book, Integer>("yearBook")); mainTable.setItems(books); } catch (SQLException e) { e.printStackTrace(); } } } The user selects an entry in the table and presses a button. How can the user track the selected entry?