2011-07-28 4 views
0

NetbeansでJavaFX 2を使用しています。フレームのサイズが変更されたときに調整する要素の幅と高さを取得するにはどうすればよいですか?ここに私のレイアウトです:バインディング枠とフレームの高さと幅

Stage stage = new Stage(); 
stage.setTitle("Hello World"); 
final Group root = new Group(); 
Scene scene = new Scene(root); 

BorderPane border = new BorderPane(); 
border.setPrefWidth(stage.getWidth()); 
border.setPrefHeight(stage.getHeight()); 

HBox outerHBox = new HBox(); 
border.setCenter(outerHBox); 
root.getChildren().add(border); 
stage.setScene(scene); 

これはhttp://java.dzone.com/articles/setting-stage-javafx-sdk前に行われてきた私が見つけたいくつかのより多くの研究 した後、それは古いFX(JavaFXの2から非常に異なる)です。私は翻訳に問題があります。私はバインディングを使用する必要がありますか?私は以前に拘束力を使ったことがなく、私はほとんどFXを使用していませんでした。

これを行うにはどうすればよいでしょうか?

+0

サンプルコードを簡略化できますか?たぶん、あなたの 'root'に' outerBox'を追加するだけで十分です。 – pmoule

+0

@pmoule私は例を単純化しました。ごめんなさい。 – Dorothy

答えて

1

すべてがNodeのクラスでサイズ変更が可能なわけではありません。 Groupクラスは、これらのクラスの1つです。あなたはrootオブジェクトでisResizable()を呼び出すときにこれを理解します。代わりにRegionというサブクラスを使用してください。 BorderPanerootとしてください。

Stage stage = new Stage(); 
stage.setTitle("Hello World"); 

final BorderPane border = new BorderPane(); 
Scene scene = new Scene(border); 

Button button = new Button("test"); 

HBox outerHBox = new HBox(); 
outerHBox.getChildren().add(button); 
outerHBox.setAlignment(Pos.CENTER); 

border.setCenter(outerHBox); 

stage.setScene(scene); 

あなたの例は今すぐ動作するはずです。

+0

ありがとう! :D私は方法を見つけました(2次元のリスナーをステージ上に置いています)が、これはずっと簡単です。 – Dorothy