МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра Вычислительной техники
ОТЧЕТ по лабораторным работам №7
по дисциплине «Распределённые системы» ТЕМА: JAVAFX
Студенты гр. 8308 |
|
Треско М.Ю. |
|
|
|
|
Сергеев В.С. |
Преподаватель |
|
|
Бекенева Я.А. |
Санкт-Петербург
2022
Цель работы
Изучение технологии JavaFX.
Основные теоретические положения
JavaFX — платформа для создания RIA, позволяет строить унифицированные приложения с насыщенным графическим интерфейсом пользователя для непосредственного запуска из-под операционных систем, работы в браузерах и на мобильных телефонах, в том числе работающих с мультимедийным содержимым.
Каркас приложения на JavaFX имеет вид:
public class Main extends Application {
@Override public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Simple Application");
primaryStage.show(); }
public static void main(String[] args) {
launch(args);
}
}
Здесь класс Application является главным классом приложения, именно
вего потоке можно использовать компоненты JavaFX.
Вметоде main, где находится точка входа в программу, вызывается метод launch(), он в свою очередь, является точкой входа в FX-приложение. Метод start() вызывается при создании потока приложения, в его параметрах можно увидеть объект класса Scene. Этот класс связан с экземпляром окна, которое будет видеть пользователь.
Именно в метод start добавляется кнопки, текстовые поля и т.п. В остальном написание простейших FX-приложений напоминает написание обычного java приложения, например на Swing.
Задание на лабораторную работу
Создать простую форму для аутентификации с использованием JavaFX.
Выполнение работы
Исходный код:
App.java
package RS.RS7JFX;
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Modality; import javafx.stage.Popup; import javafx.stage.Stage;
import java.io.IOException; import java.util.Arrays; import java.util.HashMap;
import javafx.geometry.Insets; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Label;
import javafx.scene.control.PasswordField; import javafx.scene.control.TextField; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
public class App extends Application { private StackPane root = new StackPane(); private Stage primaryStage;
HashMap<String, String> login_info = new HashMap<String, String>();
@Override
public void init() { login_info.put("Vlad", "qwerty"); login_info.put("Mikhail", "asdfgh"); login_info.put("admin", "zxcvbn");
}
@Override
public void start(Stage primaryStage) { Scene scene = new Scene(root,400,600); primaryStage.setScene(scene); primaryStage.setTitle("Логин"); primaryStage.show();
VBox vBox = new VBox();
vBox.setAlignment(Pos.CENTER);
vBox.setSpacing(8);
vBox.setPadding(new Insets(10,10,10,10)); TextField textField = new TextField(); PasswordField passwordField = new PasswordField(); Button openButton = new Button("Вход"); vBox.getChildren().addAll(
new Label("Имя пользователя"), textField,
new Label("Пароль"), passwordField, openButton);
root.getChildren().addAll(vBox);
openButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) { Stage dialogStage = new Stage();
dialogStage.initModality(Modality.WINDOW_MODAL); VBox popvBox = new VBox(); popvBox.setAlignment(Pos.CENTER); popvBox.setPadding(new Insets(15));
Button hide = new Button("Hide"); hide.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) { dialogStage.hide();
}
});
String name = textField.getText();
String password = passwordField.getText(); if (password.equals(login_info.get(name))) {
popvBox.getChildren().addAll(new Text(name + " зашёл в
систему"), hide);
dialogStage.setTitle("Успешный вход"); } else {
popvBox.getChildren().addAll(new Text("Неправильная комбинация логина и пароля"), hide);
dialogStage.setTitle("Не удалось войти");
}
dialogStage.setScene(new Scene(popvBox)); dialogStage.show();
}
});
}
public static void main(String[] args) { launch(args);
}
}
Скриншоты работы приложения:
Рисунок 1.Форма аутентификации
Рисунок 2. Успешная попытка аутентификации
Рисунок 3. Неуспешная попытка аутентификации
Вывод
При выполнении лабораторной работы изучена и применена технология
JavaFX.