Dorothy
Dorothy

Reputation: 2862

How to set a JavaFX Stage/Frame to Maximized

I'm using JavaFX 2. I want my frame to open maximized but I'm not seeing a way. I searched a bit on the internet without success. For the stage I see setFullScreen() and setIconified() but I don't see anything like setMaximized().

Upvotes: 44

Views: 66465

Answers (6)

Paul Q.
Paul Q.

Reputation: 1

I tried writing primaryStage.setMaximized(true); after writing the getVisualBounds logic. I created a method that looked like this:

public static void maximizeStage() {
    Screen screen = Screen.getPrimary();
    Rectangle2D bounds = screen.getVisualBounds();

    primaryStage.setX(bounds.getMinX());
    primaryStage.setY(bounds.getMinY());
    primaryStage.setWidth(bounds.getWidth());
    primaryStage.setHeight(bounds.getHeight());

    primaryStage.setMaximized(true); // Added setMaximized()
}

This worked for me. It creates an UNMAXIMIZED window with the size of the screen & then proceeds to truly maximize it.

Upvotes: 0

Flash
Flash

Reputation: 1125

try this simpler code primaryStage.setMaximized(true); and it fills up the whole screen . note that if you remove maximize/minise buttons the application will fill the whole screen as well as remove the taskbar so mnd your initStyles if you have any

Upvotes: 8

Frank Roth
Frank Roth

Reputation: 6339

Better use Multi-Screen compatible maximize logic:

// Get current screen of the stage      
ObservableList<Screen> screens = Screen.getScreensForRectangle(new Rectangle2D(stage.getX(), stage.getY(), stage.getWidth(), stage.getHeight()));

// Change stage properties
Rectangle2D bounds = screens.get(0).getVisualBounds();
stage.setX(bounds.getMinX());
stage.setY(bounds.getMinY());
stage.setWidth(bounds.getWidth());
stage.setHeight(bounds.getHeight());

Upvotes: 7

Hans
Hans

Reputation: 2448

The Java 8 implementation of the Stage class provides a maximized property, which can be set as follows:

primaryStage.setMaximized(true);

Upvotes: 156

Raj Wadhwa
Raj Wadhwa

Reputation: 335

Use this to remove the Minimise, Maximise Buttons :

primaryStage.initStyle(StageStyle.UTILITY);

Where primaryStage is your Stage object.

Upvotes: -7

pmoule
pmoule

Reputation: 4352

When evaluating the sourcecode of the Ensemble.jar provided with the samples of JavaFX 2.0 SDK, the currently valid way to achieve window maximizing is

Screen screen = Screen.getPrimary();
Rectangle2D bounds = screen.getVisualBounds();

primaryStage.setX(bounds.getMinX());
primaryStage.setY(bounds.getMinY());
primaryStage.setWidth(bounds.getWidth());
primaryStage.setHeight(bounds.getHeight());

(you find similar code in WindowButtons.java)

The 'maximize' button is still enabled and when clicking it, the windows will grow a bit more (Windows OS). After this the 'maximize 'button is disabled. In the provided example the standard buttons are replaced. Maybe this is still an issue.

Upvotes: 36

Related Questions