- •3.1 Лабораторна робота № 1. Створення JavaFx додатку. Авторизація користувачів.
- •Java Persistence api
- •3.1.1. Необхідне програмне забезпечення
- •3.1.2. Налаштування проекту JavaFx-додатку
- •3.1.3. Підключення бази даних
- •3.1.4. Створення моделей та їх маппінг за допомогою jpa
- •3.1.5. Створення допоміжного класу для роботи з моделями
- •3.1.6. Впровадження логіки авторизації користувача
- •3.2 Лабораторна робота № 2. Робота з медіа. Реалізація crud за допомогою jpa та TableView.
- •Медіа-програвач
- •Табличне представлення данних
- •3.2.1 Вдосконалення коду додатка
- •3.2.2 Створення інтерфейсу додатка
- •3.2.3 Створення медіа програвача
- •3.2.4 Впровадження можливості адміністрування користувачів
- •3.3 Лабораторна робота № 3. Використання вбудованого браузеру, будування графіків та створення анімації.
- •Акордеон
- •Анімація у JavaFx
- •Графіки
- •3.3.1 Інтегрування веб-браузеру до проекту
- •3.3.2 Створення графіків
- •3.3.3 Використання елементу акордіон для створення альтернативного варіанту панелі інструментів
- •3.3.4 Створення анімації кнопок
- •3.4 Лабораторна робота № 4. Технологія drag-and-drop у JavaFx-додатках. Використання стилів.
- •Drag-and-Drop
- •Стилювання додатку за допомогою css
- •3.4.1 Drag-and-Drop
- •3.4.2 Додавання можливості стилювання додатку
- •3.4.3 Створення стилів
- •3.5 Лабораторна робота № 5. Робота з JavaFx Scene Builder. 3-d трансформація у JavaFx. Розгортання додатку.
- •JavaFx Scene Builder
- •Трансформація у JavaFx
- •Розгортання JavaFx додатків
- •3.5.1 JavaFx Scene Builder
- •3.5.2 Створення логіки додатка
- •3.5.3 Розгортання додатка
Графіки
JavaFX надає розробникам шість класів, які презентують відповідні шість типів графіків. Це: BarChart, AreaChart, LineChart, BubbleChart, ScatterChart та PieChart. Але розробники не обмежені цими типами: на основі цих класів можна створити власні графіки.
Всі класи окрім PieChart мають суперклас XYChart, який відповідає за вісі. Властивість xValue відповідає за тип даних, який буде відображатися по осі Х. yValue відповідає за вісь Y. З класами, які мають вісі, можна використовувати XYChart.Series клас. Цей клас є графіком, побудованим на з’єднаних лінією точках. Нижче наведено приклад створення графіку з використанням XYChart.Series (рис. 3.21):
public class LineChartSample extends Application {
@Override public void start(Stage stage) {
stage.setTitle("Line Chart Sample");
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
xAxis.setLabel("Month");
final LineChart<String,Number> lineChart =
new LineChart<String,Number>(xAxis,yAxis);
lineChart.setTitle("Stock Monitoring, 2010");
XYChart.Series series = new XYChart.Series();
series.setName("My portfolio");
series.getData().add(new XYChart.Data("Jan", 23));
series.getData().add(new XYChart.Data("Feb", 14));
series.getData().add(new XYChart.Data("Mar", 15));
series.getData().add(new XYChart.Data("Apr", 24));
series.getData().add(new XYChart.Data("May", 34));
series.getData().add(new XYChart.Data("Jun", 36));
series.getData().add(new XYChart.Data("Jul", 22));
series.getData().add(new XYChart.Data("Aug", 45));
series.getData().add(new XYChart.Data("Sep", 43));
series.getData().add(new XYChart.Data("Oct", 17));
series.getData().add(new XYChart.Data("Nov", 29));
series.getData().add(new XYChart.Data("Dec", 25));
Scene scene = new Scene(lineChart,800,600);
lineChart.getData().add(series);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Рис. 3.21. Графік, побудований за допомогою класу LineChart
ПРАКТИЧНА ЧАСТИНА
3.3.1 Інтегрування веб-браузеру до проекту
Дати користувачеві можливість продивлятися веб-ресурси за допомогою JavaFx дуже легко. Якщо в клас JavafxApp в метод setButtonsActions дописати наступні рядки:
taskbar.getChildren().add(ButtonCreator.createButton(getClass().getResource("media/images/icon-3.png").toString(), new Runnable() {
public void run() {
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load("http://www.google.ru/");
changeView(browser);
}
}));
то запустивши додаток можна побачити наступне (рис. 3.22).
Але для більшого комфорту потрібно хоча б дати користувачеві можливість змінювати адресу сторінки. Для цього потрібно створити окремий клас Browser в новому пакеті browser з наступним кодом:
public class Browser extends BorderPane {
private final WebView browser = new WebView();
private final WebEngine webEngine = browser.getEngine();
private final HBox hbox = new HBox();
private final TextField tf = new TextField();
private final String startPage = "http://www.google.ru/";
private final Button change = new Button("Change");
public Browser() {}
}
Рис. 3.22. Демонстрація вбудованого веб-браузеру
HBox hbox буде містити в собі рядок для введення адреси та кнопку переходу за введеною адресою. Також потрібно надати можливість переходу за адресою після натиснення клавіші Enter. Отже конструктор буде виглядати так:
public Browser() {
this.setCenter(browser);
tf.setText(startPage);
tf.setOnKeyPressed(new EventHandler <KeyEvent>(){
@Override
public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.ENTER) {
webEngine.load(tf.getText());
}
}
});
change.setOnAction(new EventHandler<ActionEvent>(){
@Override public void handle(ActionEvent e){
webEngine.load(tf.getText());
}
});
browser.widthProperty().addListener(new ChangeListener(){
@Override public void changed(ObservableValue o,Object oldVal, Object newVal){
tf.setPrefWidth((Double)newVal - 61);
//At start change.getWidth() equals 0, so...hardcoding.
}
});
hbox.getChildren().addAll(tf, change);
this.setBottom(hbox);
change.fire();
}
}
В конструкторі визначаються три оброблювачі подій: один для переходу за адресою через клавішу Enter, інший — по натисканню кнопки change, а третій необхідний для змінення довжини текстового поля вводу адреси. Береться ширина веб-браузера та віднімається ширина кнопки. Але через те, що в конструкторі change.getWidth()повертає 0 — приходиться вручну задавати це значення. Запустивши додаток можна подивитись на результат (рис. 3.23).
Рис. 3.23. Веб-браузер з панеллю адреси
