Calculate preferred size and set as minimum
Kevin Rushforth
kevin.rushforth at oracle.com
Thu Aug 23 17:47:04 UTC 2018
In general, this is fragile and should not be relied upon (not to
mention it is internal API that is not available in the latest release
and is subject to change in 8u).
One possibility using public API is to use Scene::snapshot, but even
that isn't guaranteed to work in all cases if the Scene has never been
shown.
-- Kevin
On 8/23/2018 10:34 AM, Miroslav Nachev wrote:
> The GridPane is not empty:
> gridPane.add(sceneTitleHBox, 0, 0, 2, 1);
> Label usernameLabel = new Label("Username:");
> gridPane.add(usernameLabel, 0, 1);
>
> TextField usernameText = new TextField();
> gridPane.add(usernameText, 1, 1);
>
> Label passwordLabel = new Label("Password:");
> gridPane.add(passwordLabel, 0, 2);
>
> PasswordField passwordField = new PasswordField();
> gridPane.add(passwordField, 1, 2);
> gridPane.add(buttonLoginHBox, 0, 4, 2, 1);
> gridPane.add(buttonLoginActionMessage, 1, 6);
>
>
>
> On Thu, Aug 23, 2018 at 8:22 PM David Grieve <david.grieve at oracle.com>
> wrote:
>
>> If your GridPane is empty, it won't have any height or width unless you
>> set min.
>>
>>
>> On 8/23/18 1:16 PM, Miroslav Nachev wrote:
>>> For Button this works. For GridPane doesn't works:
>>> gridPane.applyCss();
>>> gridPane.layout();
>>> double width = gridPane.getWidth();
>>> double height = gridPane.getHeight();
>>> System.out.println("width=" + width + ", height=" + height);
>>> --- exec-maven-plugin:1.5.0:exec (default-cli) ---
>>> width=0.0, height=0.0
>>>
>>>
>>> On Thu, Aug 23, 2018 at 6:56 PM Shakir Gusaroff <
>> shakir.gusaroff at gmail.com>
>>> wrote:
>>>
>>>> . In javafx 8 you can find the width and height of the node before the
>>>> Stage has been shown. Use applyCss() and layout().
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> @Override
>>>>
>>>> public void start(Stage stage) throws Exception {
>>>>
>>>>
>>>>
>>>> Group root = new Group();
>>>>
>>>> Scene scene = new Scene(root);
>>>>
>>>>
>>>>
>>>> Button button = new Button("Hello World");
>>>>
>>>> root.getChildren().add(button);
>>>>
>>>>
>>>>
>>>> root.applyCss();
>>>>
>>>> root.layout();
>>>>
>>>>
>>>>
>>>> double width = button.getWidth();
>>>>
>>>> double height = button.getHeight();
>>>>
>>>>
>>>>
>>>> System.out.println(width + ", " + height);
>>>>
>>>>
>>>>
>>>> stage.setScene(scene);
>>>>
>>>> stage.show();
>>>>
>>>> }
>>>>
>>>>
>>>> On Thu, Aug 23, 2018 at 10:35 AM Miroslav Nachev <
>>>> mnachev.nscenter.eu at gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Is there any standard way to calculate the preferred size for Scene,
>>>>> Node/Pane and Stage/Window?
>>>>> I want once a form/pane is visualized, it cannot be minimized to a
>> certain
>>>>> size. Since I did not find such a built-in opportunity, at the moment
>> I am
>>>>> doing the following:
>>>>>
>>>>> Scene scene = new Scene(gridPane);
>>>>> primaryStage.setScene(scene);
>>>>> primaryStage.sizeToScene();
>>>>>
>>>>> primaryStage.show();
>>>>> primaryStage.setMinWidth(primaryStage.getWidth() + 1);
>>>>> primaryStage.setMinHeight(primaryStage.getHeight() + 1);
>>>>> primaryStage.setWidth(640);
>>>>> primaryStage.setHeight(480);
>>>>> primaryStage.show();
>>>>>
>>>>> The first call to primaryStage.show() (in orange) I do to calculate the
>>>>> minimum panel size (Scene/GridPane), then set that size as minimum on
>>>>> primaryStage, and finally set the size I want and visualize the panel
>>>>> again.
>>>>>
>>>>> The unpleasant side effect is, that the panel is no longer at the
>> center
>>>>> of
>>>>> the screen.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>>
>>>>> Regards,
>>>>> Miro.
>>>>>
>>
More information about the openjfx-dev
mailing list