FXMLを使用したJavaFX2.0アプリケーションがあります。アプリケーションのあるウィンドウのサイズが変更されたときに、コンポーネント(TextFields、ComboBoxes、レイアウトなど)のサイズが変更されるようにしたい。それで...
- JavaFXのOracleドキュメントに書かれているように、図形を使用してこのようなものを作成するには、図形にいくつかの特別なプロパティがあります。
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つの質問があります。
- バインディングを作成するには、コントローラークラスでステージを取得する必要があります。では、どうすればコントローラークラスのステージを取得できますか?
- UIコントロールには、何かにバインドするためのwidth\heightプロパティがないようです。または、おそらく私はそれらを見つけていません。
では、どうすれば問題を解決できますか?
UPD。SceneBuilderからSergeyGrinevについて:コンポーネントでCtrl + Kを使用すると(親コンポーネントの全領域を占めるように指示します)、すべて問題ありません。
しかし、コンポーネントに領域の50%を占めるように指示したい場合はどうなりますか?たとえば、2つのVBoxが表示されたタブがあります。タブの幅は100pxです。Vboxの幅はそれぞれ50pxです。VBox1にはx1=0、x2 = 50があり、VBox2にはx1 = 50、x2=100があります。次に、JavaFXアプリケーションを使用してウィンドウのサイズを変更します。これで、タブの幅= 200pxになりました。しかし、私のVBoxの幅はまだ= 50pxです。VBox1のx1= 0、x2 = 50、VBox2のx1 = 150、x2=200です。そして、VBox1 x1=0およびx2=100である必要がありますおよびVBox2x1 =100およびx2=200。ここで、x1とx2の値はVBoxのコーナーの座標です。
この状況でSceneBuilderはどのように役立ちますか?