2016-12-07 12 views
2

Javafx(FXMLを使用しない)を使用しています。ボタンをクリックしたときにステージ上のシーンを変更するためにステージにコントローラを渡しています。シーンは正しく変わりますが、ステージやシーンのサイズが大きくなります。サイズが約0.1(幅)増加し、時々高さが増加する(毎回ではありません)。Javafxシーン切り替えによるステージサイズの増加

ここに使用されているコントローラです。

public class Controller { 

public Controller(){ 

} 
public static void homeButtonhandler(Stage stage){ 
     stage.close(); 

    } 
public static void adminButtonhandler(Stage stage){ 




    adminPane adminPane1 = new adminPane(stage); 

    Scene adminScene = new Scene (adminPane1); 

    stage.setScene(adminScene); 
    }} 

adminPaneは、私が作成したmainPaneという別のクラスを拡張しており、両方ともPaneクラスを拡張しています。 GUI構造を作成するための他のペインがあります。メインウィンドウのためのサイジングは、そのように設定されています

top = createTop(stage); 

    this.getChildren().addAll(top); 
    this.setWidth(stage.getWidth()); 
    this.setPrefWidth(stage.getWidth()); 
    this.setMaxWidth(stage.getWidth()); 
    this.setMinWidth(stage.getWidth()); 

    this.setHeight(stage.getHeight()); 
    this.setMaxHeight(stage.getHeight()); 
    this.setMinHeight(stage.getHeight()); 
    this.setPrefHeight(stage.getHeight()); 

私が使用してクラスをテストしてい:

public class test extends Application { 

@Override 
public void start(Stage primaryStage) throws Exception { 
    //primaryStage.setResizable(true); 

    mainPane myPane = new mainPane(primaryStage); 
    Scene homeScene = new Scene (myPane); 

    primaryStage.setScene(homeScene); 
    primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/resources/icons/joulesIcon.png"))); 
    primaryStage.show(); 


    } 


public static void main(String[] args) { 
    launch(args); 
} 

} 私は、それは舞台の私の通過とは何かを持っていると信じてポインタは非常に高く評価されるだろう。

+0

新しいステージを作成します。 – Sedrick

+0

私は新しいステージを作成すると、ウィンドウが閉じてもう一度開きます。私が行く合理化されたdesginではありません。 – user2370794

+0

私の推測では、コンポーネントがステージの元のサイズに収まりません。私はこれにより、新しいコンポーネントに合わせてステージが成長すると思います。 – Sedrick

答えて

1

また、私がprimaryStage.setScene(new Scene(root, primaryStage.getWidth(), primaryStage.getHeight()))を使用したときに、その物がウィンドウの下に描画されていることがわかりました。私の場合は、プライマリステージのディメンションではなく、古いシーンのディメンションを使用して解決されました。

public void setScene(Parent root) { 
    Scene oldScene = primaryStage.getScene(); 
    primaryStage.setScene(oldScene == null 
      ? new Scene(root, primaryStage.getMinWidth(), primaryStage.getMinHeight()) 
      : new Scene(root, oldScene.getWidth(), oldScene.getHeight())); 
} 
関連する問題