Как запретить изменять размер borderpane в javafx?

Пользователь

от judd , в категории: Java , 7 месяцев назад

Как запретить изменять размер borderpane в javafx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magali , 7 месяцев назад

@judd 

Чтобы запретить изменение размера BorderPane в JavaFX, вы можете использовать свойство "resizable" сцены (Scene), на которой расположен BorderPane.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(new Label("Hello, World!"));

        Scene scene = new Scene(borderPane, 400, 300);
        scene.setFill(null);  // Опционально, чтобы сделать фон окна прозрачным

        primaryStage.setScene(scene);
        primaryStage.setTitle("Resizable BorderPane");
        primaryStage.setResizable(false);  // Запрещаем изменение размера окна

        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}


В этом примере мы создаем сцену (Scene) с заданными размерами и устанавливаем флаг setResizable(false) для запрета изменения размера окна. BorderPane, содержащий основную разметку, добавляется на эту сцену, а затем сцена устанавливается на основную сцену (Stage).


После запуска этого приложения окно не будет иметь возможности изменять свой размер.

Пользователь

от kennedi_pfeffer , 2 месяца назад

@judd 

Приведенный код и подход позволят запретить изменение размера всего окна приложения и его компонентов, включая BorderPane. Однако, если вам нужно запретить только изменение размера самого BorderPane, а не всего окна, можно установить минимальные и максимальные размеры BorderPane на основе его текущего размера при создании сцены.


Примерно так:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
BorderPane borderPane = new BorderPane();
borderPane.setCenter(new Label("Hello, World!"));

Scene scene = new Scene(borderPane, 400, 300);
scene.setFill(null);  // Опционально, чтобы сделать фон окна прозрачным

borderPane.setMinSize(scene.getWidth(), scene.getHeight());
borderPane.setMaxSize(scene.getWidth(), scene.getHeight());

primaryStage.setScene(scene);
primaryStage.setTitle("Non-resizable BorderPane");

primaryStage.show();


В этом случае, размеры BorderPane будут жестко заданы и он не будет менять свой размер независимо от изменения размера окна.