2016-07-18 21 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が好みのサイズに子供のサイズを変更することです:

デフォルトでは地域はスーパークラスのレイアウト動作を継承し、それは彼らの優先を するために、任意のサイズ変更可能な子ノードのサイズを変更することを意味し 親、サイズは変更されませんが、再配置されません。アプリケーション がより具体的なレイアウト動作を必要とする場合は、 Regionサブクラスの1つ、St​​ackPane、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); 

あなたが期待する通り。

関連する問題