Как сделать окно программы Decorated?

187
04 июня 2019, 09:10

При запуске программы primary stage указал UNDECORATED, и сделал окно программы на весь экран.По нажатию горячих клавиш окно программы изменяется на заданные размеры, но я не могу ресайзить окно. Как можно сделать ресайз UNDECORATED stage? ну или хотя бы показать рамку, за которую можно тянуть мышкой и делать ресайз окна.

класс MAIN:

package card;
import com.jfoenix.controls.JFXDecorator;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.input.*;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javax.swing.*;
import static javafx.stage.StageStyle.*;

public class Main extends Application {
  //create variables for draggable window
  private double xOffset = 0;
  private double yOffset = 0;
  private Boolean resizebottom = false;
  private double dx;
  private double dy;
  public static void main(String[] args) {
    launch(args);
  }
  @Override
  public void start(Stage primaryStage) throws Exception {
    try {

      Parent root = FXMLLoader.load(getClass().getResource("/card/card.fxml"));

      Scene scene = new Scene(root);
      primaryStage.setScene(scene);
      scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
      primaryStage.initStyle(StageStyle.UNDECORATED);
      primaryStage.setMaximized(true);
      primaryStage.setResizable(true);
      primaryStage.getIcons().add(new Image("card/resources/logo-icon.png"));
      primaryStage.show();
      //make application draggable
      root.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
          xOffset = event.getSceneX();
          yOffset = event.getSceneY();
        }
      });
      root.setOnMouseDragged(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
          primaryStage.setX(event.getScreenX() - xOffset);
          primaryStage.setY(event.getScreenY() - yOffset);
        }
      });
      //assign ALT+ENTER to maximize window
      final KeyCombination kb = new KeyCodeCombination(KeyCode.ENTER, KeyCombination.CONTROL_DOWN);
      scene.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {
          if (kb.match(event)) {
            primaryStage.setMaximized(!primaryStage.isMaximized());
            primaryStage.setResizable(true);
          }
        }
      });

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
READ ALSO
Css3 появление элемента при :checked

Css3 появление элемента при :checked

Пишу свое адаптивное менюВсе работает

169
Отложенные сообщения Telegram bot Node.js

Отложенные сообщения Telegram bot Node.js

Всем здравствуйтеДелаю бота для Telegram на Node

136
Ошибка JS: TypeError: Electron.inita is not a constructor

Ошибка JS: TypeError: Electron.inita is not a constructor

Выдает такого рода ошибкуПогуглил, узнал, что она возникает когда пытаешься вызвать функцию как конструктор, но это не конструктор

160