sergAccount

Untitled

Apr 11th, 2021
427
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.mycompany.mavenproject3;
  2.  
  3. import java.util.Optional;
  4. import javafx.application.Application;
  5. import javafx.application.Platform;
  6. import javafx.event.ActionEvent;
  7. import javafx.geometry.Insets;
  8. import javafx.scene.Scene;
  9. import javafx.scene.control.Alert;
  10. import javafx.scene.control.Alert.AlertType;
  11. import javafx.scene.control.Button;
  12. import javafx.scene.control.ButtonType;
  13. import javafx.scene.control.Label;
  14. import javafx.scene.layout.FlowPane;
  15. import javafx.scene.layout.Pane;
  16. import javafx.scene.layout.VBox;
  17. import javafx.stage.Stage;
  18.  
  19. public class App extends Application {
  20.  
  21.     private static final int W_WIDTH = 1024;
  22.     private static final int W_HEIGHT = 680;
  23.     private static final int W_POS_X = 10;
  24.     private static final int W_POS_Y = 10;
  25.     // ссылка на главное окно !!!
  26.     private Stage pStage;
  27.  
  28.     @Override
  29.     public void start(Stage stage) {
  30.         //
  31.         System.out.println("App.start>>");
  32.         this.pStage = stage;
  33.         // создем сцену        
  34.         var scene = new Scene(createPane(), W_WIDTH, W_HEIGHT);
  35.         stage.setTitle("JavaFX Controls!!!");
  36.         stage.setScene(scene);
  37.         // установка позиции окна (x,y) - левый верхний угол
  38.         stage.setX(W_POS_X);
  39.         stage.setY(W_POS_Y);
  40.         // запретить менять размер!!!
  41.         stage.setResizable(false);
  42.  
  43.         stage.show();
  44.     }
  45.  
  46.     // определяем и настраиваем компонеты
  47.     private Pane createPane() {
  48.         // панель - вертик расположение элементов
  49.         final VBox pane = new VBox();
  50.         pane.setSpacing(10);
  51.         pane.setPadding(new Insets(10, 10, 10, 10));
  52.         // панель - потоковое расположение, вертик и горизонтальные отступы!!!
  53.         final FlowPane buttonsPane = new FlowPane();
  54.         buttonsPane.setVgap(0);
  55.         buttonsPane.setHgap(10);
  56.         // создаем элементы управления !!!
  57.         Button btn1 = new Button("Обновить");
  58.         btn1.setOnAction(this::onRefresh);
  59.         Button btn2 = new Button("Очистить");
  60.         btn2.setOnAction(this::onClear);
  61.         Button btn3 = new Button("FullScreen MODE");
  62.         btn3.setOnAction(this::onFullScreen);
  63.         Button btn4 = new Button("Центрировать");
  64.         btn4.setOnAction(this::onCenter);
  65.         Button btn6 = new Button("Выход");
  66.         btn6.setOnAction(this::onExit);
  67.        
  68.         Button btn5 = new Button("Окно");
  69.         btn5.setOnAction(this::onOpenWindow);
  70.  
  71.         buttonsPane.getChildren().addAll(btn1, btn2, btn3, btn4, btn5, btn6);
  72.         // добавляем панель в pane
  73.         pane.getChildren().addAll(buttonsPane);
  74.         return pane;
  75.     }
  76.     //
  77.     private void onOpenWindow(ActionEvent t) {        
  78.         final Label secondLabel = new Label("I'm a Label on new Window!");
  79.         final VBox pane = new VBox();
  80.         pane.getChildren().add(secondLabel);
  81.         // создаем сцену
  82.         Scene secondScene = new Scene(pane, 230, 100);
  83.         // New window (Stage)
  84.         Stage newWindow = new Stage();
  85.         newWindow.setTitle("Second Stage");
  86.         newWindow.setScene(secondScene);
  87.         // Set position of second window, related to primary window.
  88.         newWindow.setX(pStage.getX() + 200);
  89.         newWindow.setY(pStage.getY() + 100);
  90.         newWindow.show();
  91.        
  92.                
  93.     }
  94.    
  95.      //
  96.     private void onExit(ActionEvent t) {
  97.         //
  98.         System.out.println("onExit>>");
  99.         final Alert alert = new Alert(AlertType.CONFIRMATION);
  100.         alert.setTitle("Выход");
  101.         alert.setHeaderText("Завершить работу?");
  102.         alert.setContentText(":)");
  103.         // показывает диалог на экране и ждет действий пол-ля
  104.         Optional<ButtonType> option = alert.showAndWait();
  105.         if(option.get() == ButtonType.OK){
  106.             // завершаем работу JavaFX APP
  107.             Platform.exit();
  108.         }        
  109.     }
  110.  
  111.     //
  112.     private void onRefresh(ActionEvent t) {
  113.         System.out.println("onRefresh!!!");
  114.     }
  115.  
  116.     private void onClear(ActionEvent t) {
  117.     }
  118.  
  119.     private void onFullScreen(ActionEvent t) {
  120.         pStage.setMaximized(true);
  121.         pStage.setFullScreen(true);
  122.     }
  123.  
  124.     private void onCenter(ActionEvent t) {
  125.         // centerOnScreen
  126.         pStage.centerOnScreen();
  127.     }
  128.  
  129.  
  130.     public static void main(String[] args) {
  131.         launch();
  132.     }
  133.  
  134.    
  135.  
  136.  
  137. }
  138.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×