2016-07-18 21 views
1

Ich möchte die Größe der Stage und WebView einer JavaFx-Anwendung ändern.WebView-Größe in JavaFX-Stufe

Ich kann die Fenstergröße ändern, aber die Browsergröße steigt nicht von 800px, so dass die Anzeige der HTML-Seite nicht in alle Fenster passt.

Es sieht wie folgt aus (die hellgraue Zone auf der rechten Seite beachten):

enter image description here

Dieser einige Code der Seite lautet:

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); 
    } 
} 

Antwort

1

Sie können einfach dieses Problem beheben mit Verlängerung zum Beispiel StackPane statt Region:

Der Unterschied besteht darin, dass Region die Kinder auf ihre bevorzugte Größe paßt die Größe:

standardmäßig eine Region das Layout Verhalten seiner übergeordneten Klasse erbt, Elternteil, was bedeutet, dass es keinen veränderbaren geordneten Knoten die Größe ihre bevorzugten Größe, aber wird sie nicht neu positionieren. Wenn eine Anwendung ein spezifischeres Layoutverhalten benötigt, sollte sie eine der Region-Unterklassen verwenden: StackPane, HBox, VBox, TilePane, FlowPane, BorderPane, GridPane oder AnchorPane.

Während StackPane versucht, seine Kinder, um die Größe des Content-Bereich passen:

Die stackpane jedes Kind, um die Größe wird versuchen, seinen Inhalt Bereich zu füllen. Wenn das Kind nicht so groß sein konnte, dass es die Stackpanel füllte (entweder , weil es nicht skalierbar war oder seine maximale Größe es verhinderte), wird es innerhalb des Bereichs mit der Eigenschaft alignment ausgerichtet, die standardmäßig Pos.CENTER ist.

Das bedeutet natürlich auch, wenn Sie Region verwenden, aber entweder Sie setzen die preferred size der WebView zu „etwas Großes“ wie

browser.setPrefSize(5000, 5000); 

oder Sie die heightProperty und widthProperty des WebView an die binden Entsprechende Eigenschaften der Stage,

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

wird es auch funktionieren wie du es erwartest.