2016-03-24 65 views
4

在我的JavaFX FXML應用程序中,當我將可調整大小設置爲false並將其最大化爲true時,窗口變爲最大化,但任務欄變爲隱藏狀態。我在Windows 7 64位和JDK 1.8.60上使用Netbeans 8.0.2Javafx stage resizeable false and maximized true隱藏任務欄

在Netbeans中,我按照步驟創建了一個新的JavaFX FXML應用程序。對於生成的默認代碼,我在啓動函數中添加了以下兩行代碼。

stage.setResizable(false); 
stage.setMaximized(true); 

因此,最終啓動功能是如下

public void start(Stage stage) throws Exception { 
    Parent root = FXMLLoader.load(getClass(). 
     getResource("FXMLDocument.fxml")); 

    Scene scene = new Scene(root); 

    stage.setScene(scene); 
    stage.setResizable(false); 
    stage.setMaximized(true); 
    stage.show(); 
} 

現在,當我運行窗口最大化的應用,標題欄是可見的,但任務欄是不可見的。我應該如何解決這個問題,即使任務欄可見?

+1

我不能重現這個 - 你的代碼正確** **最大化窗口,與標題按鈕仍然顯示。只有當我用'stage.setMullScreen(true);'替換'stage.setMaximized(true);'時,窗口才能正確顯示**全屏**,沒有標題按鈕,並且有一個記錄窗口按下'ESC'關閉全屏模式。你的'.fxml'文件中有什麼不尋常的東西嗎?理想情況下發佈一個[mcve],我們可以直接放入'javac'來重現問題。 –

+0

在Netbeans中,我遵循了創建新應用程序的步驟以及生成的默認代碼,我添加了可調整大小和最大化的代碼。 – Dinesh

+0

因此,通過上面的代碼,你會得到一個類似「按ESC關閉全屏模式」的通知,並且最大化的窗口不會包含標題欄,其中包含關閉和最小化的常用按鈕?您使用哪種操作系統的窗口系統,以及您的確切JDK版本是什麼? –

回答

1

如果你想你是不是階段調整大小和最大化,在任務欄上看到,您可以使用此代碼,我認爲:

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds(); 
stage.setX(primaryScreenBounds.getMinX()); 
stage.setY(primaryScreenBounds.getMinY()); 
stage.setWidth(primaryScreenBounds.getWidth()); 
stage.setHeight(primaryScreenBounds.getHeight()); 

這樣做什麼,正在尋找屏幕邊界,它需要的任務欄。

2

@ JC997有一個很好的答案,但我想提煉。

使用setWidth和setHeight時,您不會阻止用戶調整整個窗口的大小。將setResizeable(false)與下面的代碼組合在這種情況下都不會有幫助。

你應該申請最大值,以真正實現你在找什麼,用這個

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds(); 
stage.setX(primaryScreenBounds.getMinX()); 
stage.setY(primaryScreenBounds.getMinY()); 

stage.setMaxWidth(primaryScreenBounds.getWidth()); 
stage.setMinWidth(primaryScreenBounds.getWidth()); 

stage.setMaxHeight(primaryScreenBounds.getHeight()); 
stage.setMinHeight(primaryScreenBounds.getHeight());