Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mycompany.mavenproject3;
- import java.util.Optional;
- import javafx.application.Application;
- import javafx.application.Platform;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.geometry.Insets;
- import javafx.scene.Scene;
- import javafx.scene.control.Alert;
- import javafx.scene.control.Alert.AlertType;
- import javafx.scene.control.Button;
- import javafx.scene.control.ButtonType;
- import javafx.scene.control.Label;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableView;
- import javafx.scene.control.TextField;
- import javafx.scene.control.cell.PropertyValueFactory;
- import javafx.scene.layout.FlowPane;
- import javafx.scene.layout.Pane;
- import javafx.scene.layout.VBox;
- import javafx.stage.Stage;
- public class App extends Application {
- private static final int W_WIDTH = 1024;
- private static final int W_HEIGHT = 680;
- private static final int W_POS_X = 10;
- private static final int W_POS_Y = 10;
- // ссылка на главное окно !!!
- private Stage pStage;
- // таблица для показа объектов типа Person
- private TableView<Person> tableView;
- //
- private ObservableList<Person> data = FXCollections.observableArrayList();
- @Override
- public void start(Stage stage) {
- //
- System.out.println("App.start>>");
- this.pStage = stage;
- // создем сцену
- var scene = new Scene(createPane(), W_WIDTH, W_HEIGHT);
- stage.setTitle("JavaFX Controls!!!");
- stage.setScene(scene);
- // установка позиции окна (x,y) - левый верхний угол
- stage.setX(W_POS_X);
- stage.setY(W_POS_Y);
- // запретить менять размер!!!
- stage.setResizable(false);
- stage.show();
- }
- // определяем и настраиваем компонеты
- private Pane createPane() {
- // панель - вертик расположение элементов
- final VBox pane = new VBox();
- pane.setSpacing(10);
- pane.setPadding(new Insets(10, 10, 10, 10));
- // панель - потоковое расположение, вертик и горизонтальные отступы!!!
- final FlowPane buttonsPane = new FlowPane();
- buttonsPane.setVgap(0);
- buttonsPane.setHgap(10);
- // создаем элементы управления !!!
- Button btn1 = new Button("Обновить");
- btn1.setOnAction(this::onRefresh);
- Button btn2 = new Button("Очистить");
- btn2.setOnAction(this::onClear);
- Button btn3 = new Button("FullScreen MODE");
- btn3.setOnAction(this::onFullScreen);
- Button btn4 = new Button("Центрировать");
- btn4.setOnAction(this::onCenter);
- Button btn6 = new Button("Выход");
- btn6.setOnAction(this::onExit);
- Button btn5 = new Button("Окно");
- btn5.setOnAction(this::onOpenWindow);
- TextField textField = new TextField();
- textField.setText("TEST");
- buttonsPane.getChildren().addAll(btn1, btn2, btn3, btn4, btn5, btn6, textField);
- // создаем таблицу!!!
- data = createData();
- tableView = createTableView(data);
- // добавляем панель в pane
- pane.getChildren().addAll(buttonsPane, tableView);
- return pane;
- }
- // метод воз-ет для таблицы
- private static ObservableList<Person> createData() {
- //
- final ObservableList<Person> data = FXCollections.observableArrayList();
- data.add(new Person("fName1", "lastName1"));
- data.add(new Person("fName2", "lastName2"));
- data.add(new Person("fName3", "lastName3"));
- return data;
- }
- private static TableView<Person> createTableView(final ObservableList<Person> data) {
- TableView<Person> tView = new TableView<>();
- // определяем колонки для таблицы
- TableColumn<Person, String> column1 = new TableColumn<>("Имя");
- column1.setCellValueFactory(new PropertyValueFactory<>("firstName"));
- // задаем колонку "Имя" для таблицу
- tView.getColumns().add(column1);
- // задаем колонку "Фамилия" для таблицу
- TableColumn<Person, String> column2 = new TableColumn<>("Фамилия");
- column2.setCellValueFactory(new PropertyValueFactory<>("lastName"));
- tView.getColumns().add(column2);
- // устанавливаем данные для таблицы
- tView.setItems(data);
- return tView;
- }
- //
- private void onOpenWindow(ActionEvent t) {
- final Label secondLabel = new Label("I'm a Label on new Window!");
- final VBox pane = new VBox();
- pane.getChildren().add(secondLabel);
- // создаем сцену
- Scene secondScene = new Scene(pane, 230, 100);
- // New window (Stage)
- Stage newWindow = new Stage();
- newWindow.setTitle("Second Stage");
- newWindow.setScene(secondScene);
- // Set position of second window, related to primary window.
- newWindow.setX(pStage.getX() + 200);
- newWindow.setY(pStage.getY() + 100);
- newWindow.show();
- }
- //
- private void onExit(ActionEvent t) {
- //
- System.out.println("onExit>>");
- final Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Выход");
- alert.setHeaderText("Завершить работу?");
- alert.setContentText(":)");
- // показывает диалог на экране и ждет действий пол-ля
- Optional<ButtonType> option = alert.showAndWait();
- if(option.get() == ButtonType.OK){
- // завершаем работу JavaFX APP
- Platform.exit();
- }
- }
- //
- private void onRefresh(ActionEvent t) {
- System.out.println("onRefresh!!!");
- }
- //
- private void onClear(ActionEvent t) {
- data.clear();
- }
- private void onFullScreen(ActionEvent t) {
- pStage.setMaximized(true);
- pStage.setFullScreen(true);
- }
- private void onCenter(ActionEvent t) {
- // centerOnScreen
- pStage.centerOnScreen();
- }
- public static void main(String[] args) {
- launch();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement