2016-07-18 101 views
1

我想更改JavaFx應用程序的StageWebView的大小。JavaFX階段的WebView大小

我可以更改窗口大小,但瀏覽器大小不會從800px增加,因此html頁面的顯示不適合所有窗口。

它看起來像這樣(請注意右邊的淺灰色區域):

enter image description here

這是頁面的一些代碼:

public class EfadosApp extends Application { 
    private Scene scene; 

    @Override public void start(Stage stage) { 
     scene = new Scene(new Browser(), 1000,500); 
     stage.setScene(scene); 
     stage.show(); 
    } 
} 

class Browser extends Region { 
    final WebView browser = new WebView(); 
    final WebEngine webEngine = browser.getEngine(); 

    public Browser() { 
     webEngine.load("www.oracle.com"); 
     getChildren().add(browser); 
    } 
} 

回答

1

你可以簡單地延伸解決這個問題例如StackPane而不是Region

class Browser extends StackPane { 
    ... 
} 

不同的是,Region調整大小的孩子他們的首選大小:

默認情況下,一個地區繼承其超, 家長,佈局行爲,這意味着它會調整任何可調整大小的子節點 他們的首選大小,但不會重新定位它們。如果應用程序 需要更具體的佈局行爲,則應使用 區域子類之一:StackPane,HBox,VBox,TilePane,FlowPane,BorderPane,GridPane或AnchorPane。

雖然StackPane試圖調整其子以適合內容區域:

的stackpane將嘗試調整每個孩子填寫其內容 區域。如果孩子的體積不足以填充堆疊面板( ,因爲它不可調整大小或最大尺寸阻止),那麼它將使用alignment屬性在該區域內對齊,其中 默認爲Pos.CENTER。

當然這也意味着,如果你使用Region但任你設置WebViewpreferred size爲「事大」之類

browser.setPrefSize(5000, 5000); 

,或者您綁定WebViewheightPropertywidthProperty到相應的屬性Stage,

Browser browser = new Browser(); 
browser.browser.prefHeightProperty().bind(stage.heightProperty()); 
browser.browser.prefWidthProperty().bind(stage.widthProperty()); 
scene = new Scene(browser, 1000, 500); 

它也會工作如你所料。