FXMLを使用したJavaFX 2.0アプリケーションがあります。アプリケーションを含むウィンドウのサイズが変更されたときに、コンポーネント(TextFields、ComboBoxes、レイアウトなど)のサイズを変更する必要があります。そう...
JavaFXを使用してGUIアプリケーションを構築する場合、APIの特定のクラスがすでにプロパティを実装していることに気付くでしょう。たとえば、_
javafx.scene.shape.Rectangle
_クラスには、arcHeight
、arcWidth
、height
、width
、x
、およびy
のプロパティが含まれます。これらのプロパティごとに、前述の規則に一致する対応するメソッドがあります。たとえば、getArcHeight()
、setArcHeight(double)
、arcHeightProperty()
は、指定されたプロパティが存在することを(開発者とツールの両方に)一緒に示します。*
ステージにリスナーを追加するには、次のようにする必要があります。
_ stage.resizableProperty().addListener(new ChangeListener<Boolean>(){
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2){
throw new UnsupportedOperationException("Not supported yet.");
}
});
_
したがって、2つの質問があります。
だから、どうすれば問題を解決できますか?
[〜#〜] upd [〜#〜]。 Scene BuilderからSergey Grinevへ:コンポーネントでCtrl + Kを使用する場合(親コンポーネントの領域全体を占めるように伝える)-すべて問題ありません。
しかし、コンポーネントにエリアの50%を占有するように伝えたい場合はどうすればよいですか?たとえば、2つのVBoxを含むタブがあります。タブの幅は100pxです。 Vboxの幅は、それぞれ50pxです。 VBox1にはx1 = 0、およびx2 = 50、VBox2にはx1 = 50、およびx2 = 100。次に、JavaFXアプリケーションでウィンドウのサイズを変更します。これで、タブの幅=200pxになりました。しかし、私のVBoxesの幅はまだ=50px:VBox1にはx1 = 0 、およびx2 = 50、VBox2にはx1 = 150、およびx2 = 200。そして、私はそれらをVBox1x1 = 0およびx2 = 100にする必要がありますおよびVBox2x1 = 100およびx2 = 200。ここで、x1とx2の値はVBoxesコーナーの座標です。
この状況でScene Builderはどのように役立ちますか?
もう1つの簡単なオプションは、JavaFX Scene Builderを使用することです(最近公開ベータ版として利用可能になります: http://www.Oracle.com/technetwork/Java/javafx/tools/index.html )
ドラッグアンドドロップでUIを作成し、UI要素を境界線に( アンカーツール で)アンカーできるため、ウィンドウの境界線に合わせて移動/サイズ変更できます。
更新:
パーセントレイアウトの自動サイズ変更を実現するには、GridPane
とColumnConstraint
を使用できます。
public void start(Stage stage) {
VBox box1 = new VBox(1);
VBox box2 = new VBox(1);
//random content
RectangleBuilder builder = RectangleBuilder.create().width(20).height(20);
box1.getChildren().addAll(builder.build(), builder.build(), builder.build());
builder.fill(Color.RED);
box2.getChildren().addAll(builder.build(), builder.build(), builder.build());
//half by half screen
GridPane grid = new GridPane();
grid.addRow(0, box1, box2);
ColumnConstraints halfConstraint = ColumnConstraintsBuilder.create().percentWidth(50).build();
grid.getColumnConstraints().addAll(halfConstraint, halfConstraint);
stage.setScene(new Scene(grid, 300, 250));
stage.show();
}
サイズ変更可能なGUIを構築するためのいくつかの提案=>
例 上記の原則のいくつかを実装するサイズ変更可能なJavaFX UIです。
提案: