Tabulka v JavaFX Připojení k databázi přes JDBC

Слайд 2

Komponenta TableView Ukázkový příklad TableJavaFXVPameti Kurz 4IT115 cvičení ©Alena Buchalcevová

Komponenta TableView

Ukázkový příklad
TableJavaFXVPameti

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 3

Model tabulky Při použití tabulky v JavaFX aplikaci je dobrou praktikou

Model tabulky

Při použití tabulky v JavaFX aplikaci je dobrou praktikou implementovat

třídu, která definuje datový model a má metody a pole pro práci s tabulkou
V našem příkladu je to třída Person
Můžeme ji implementovat:
jako statickou vnitřní třídu ve třídě s metodou start (TableJavaFXVPameti)
v příkladu je implementována jako veřejná vnější třída
firstName, lastName a email jsou string property vytvořené proto, aby bylo možné se odkazovat na jednotlivé prvky
dále jsou pro každou property vytvořeny get a set metody

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 4

Třída PanelTabulky V příkladu je vytvořena třída PanelTabulky, která vytvoří tabulku

Třída PanelTabulky

V příkladu je vytvořena třída PanelTabulky, která vytvoří tabulku a

vloží ji do panelu – FlowPane
Má metodu getPanel, který panel s tabulkou vrátí
Data, která se mají v tabulce zobrazit, se drží v atributu data, který je typu ObservableList
Vytvoří se ObservableArrayList a naplní se 5 záznamy
data = FXCollections.observableArrayList(
new Person("Jacob", "Smith", "jacob.smith@example.com"),
new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
new Person("Ethan", "Williams", "ethan.williams@example.com"),
new Person("Emma", "Jones", "emma.jones@example.com"),
new Person("Michael", "Brown", "michael.brown@example.com")
);

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 5

Třída PanelTabulky/2 Dále je třeba definovat, která data se budou zobrazovat

Třída PanelTabulky/2

Dále je třeba definovat, která data se budou zobrazovat ve

sloupcích – to se dělá pomocí properties definovaných pro každý prvek
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(
new PropertyValueFactory<>("firstName"));
TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(
new PropertyValueFactory<>("lastName"));
TableColumn emailCol = new TableColumn("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(
new PropertyValueFactory<>("email"));

Kurz 4IT115 cvičení
©Alena Buchalcevová

metoda setCellValueFactory definuje cell factory pro každý sloupec
cell factory je implementována pomocí třídy PropertyValueFactory class, která použije property firstName resp. lastName resp. email sloupce tabulky jako odkaz na odpovídající metody třídy Person

Слайд 6

Třída PanelTabulky/3 Když je vytvořen datový model a data jsou asociována

Třída PanelTabulky/3

Když je vytvořen datový model a data jsou asociována se

sloupci tabulky, můžete přiřadit data do tabulky pomocí metody setItems
table.setItems(data)
Protože objekt ObservableList sleduje změny prvků, obsah TableView se automaticky aktualizuje

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 7

Další k TableView Tutoriál http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGAAEE Kurz 4IT115 cvičení ©Alena Buchalcevová

Další k TableView

Tutoriál
http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGAAEE

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 8

Uložení tabulky do databáze SQLite Ukázkový příklad TableJavaFXDB Kurz 4IT115 cvičení ©Alena Buchalcevová

Uložení tabulky do databáze SQLite

Ukázkový příklad TableJavaFXDB

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 9

Připojení SQLite Vytvořit knihovnu a vložit do ní jar soubor, který

Připojení SQLite

Vytvořit knihovnu a vložit do ní jar soubor, který se

stáhne na
https://bitbucket.org/xerial/sqlite-jdbc/downloads/sqlite-jdbc-3.8.11.1.jar

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 10

Připojení k DB a prvotní naplnění do třídy PanelTabulky try {

Připojení k DB a prvotní naplnění do třídy PanelTabulky

try {
connection =

DriverManager.getConnection("jdbc:sqlite:Pokus");
statement = connection.createStatement();
//stat.executeUpdate("drop table if exists person");
statement.executeUpdate("create table if not exists osoby(FirstName varchar(50),LastName varchar(50),Email varchar(50));");
// pocatecni ulozeni
data = observableArrayList(
new Person("Jacob", "Smith", "jacob.smith@example.com"),
new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
new Person("Ethan", "Williams", "ethan.williams@example.com"),
new Person("Emma", "Jones", "emma.jones@example.com"),
new Person("Michael", "Brown", "michael.brown@example.com")
);
saveData();

Kurz 4IT115 cvičení
©Alena Buchalcevová

Слайд 11

Načtení dat z DB do observable listu data data = FXCollections.observableArrayList();

Načtení dat z DB do observable listu data

data = FXCollections.observableArrayList();
ResultSet rs

= connection.createStatement().executeQuery("select * from osoby");
while (rs.next()) {
data.add(new Person(rs.getString("FirstName"), rs.getString("LastName"), rs.getString("Email")));
}

Kurz 4IT115 cvičení
©Alena Buchalcevová