2013-10-29 25 views
5

をクリックしたときに同じSceneに余分なオプションを表示する必要がありますが、この動作を実現する方法はわかりません。私がルートにパネルを追加するときStageがサイズ変更されない問題VBoxJavaFX:ルートの親に子を追加した後に自動サイズ調整の段階

私はこの問題を示す簡単なコードを書いています。

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class Main extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 

    public void start(Stage stage) throws Exception { 
     final VBox root = new VBox(); 
     Button button = new Button("add label"); 
     root.getChildren().add(button); 

     button.setOnAction(new EventHandler<ActionEvent>() { 
      public void handle(ActionEvent event) { 
       root.getChildren().add(new Label("hello")); 
      } 
     }); 

     stage.setScene(new Scene(root)); 
     stage.show(); 
    } 
} 

私はレイアウトを行うには、ルートコンテナに通知するために、いくつかのメソッドを呼び出すために必要があるとしますが、私がしようとするすべてのメソッドは私に望ましい結果をもたらしていません。

答えて

24

プログラムの動作

あなたのプログラムは、あなたが、私は(あなたが「ラベルを追加」ボタンをクリックすると、新しいラベルがシーンに追加された)と思う期待ほとんどとして働いています。あなたはそれがあなたのステージとして新たに追加されたラベルを見ることができない

の作業を見ることができないのはなぜ

シーンの最初の内容に合わせて、デフォルトでは大きさです。シーンに領域を追加すると、新しい領域を含むようにステージのサイズが自動的に変更されることはありません。それはラベルを追加した後、ステージウィンドウのサイズを変更する手動

を働く見て何をすべきか

OR

あなたが新しく追加されたラベルを見ることができるように、シーンの初期サイズを設定します。

stage.setScene(new Scene(root, 200, 300)); 

OR

あなたがそれぞれの新しいラベルを追加した後

size the stage to the scene

stage.sizeToScene(); 
0

単にコード

button.setOnAction(new EventHandler<ActionEvent>() 
{ 
    public void handle(ActionEvent event) 
    { 
     root.getChildren().add(new Label("hello")); 
     stage.sizeToScene(); 
    } 
}); 
を変更
関連する問題