質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

1回答

685閲覧

javaFX 描画前にサイズを取得する方法

toip

総合スコア12

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2018/10/21 03:48

javaFX でシステム開発をしています。

HBoxにLabelを動的に追加する処理があり
最終的にHBoxの幅がいくつになるか取得したいのですが
getWidthすると必ず0になってしまいます。
Stage.showで描画した後であれば、取得できるのですが
描画前に取得することは不可能でしょうか?

Labelの幅も動的に変わるので
計算せずに取得する方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

正確には「描画」する際に計算されるのではなく「レイアウトを確定する」際に計算されると思います。レイアウト結果が確定できるタイミングは多分「制約が全て設定された状態でノード階層が完成」していることが必要だろうと思います。

「HBoxの幅を事前に知る」目的が何かが明確にはわかりませんが、おそらく「その幅を用いてレイアウト制約を指定したいから」ではないかと思います。もしそうなら別のアプローチをとった方がよいかも知れません。「HBoxの幅がいくつであれ、その幅によって上位のコンテナや兄弟ノードの大きさが自動調整されるような制約の指定方法を考える」方がひょっとすると適切かも知れないと思います。しかし目的によって採るべき方法が変わりそうなのではっきりとは言えません。

なぜHBoxの幅を事前に知りたいのか目的をもう少し具体的に記載されてはいかがでしょう。それにより適切なアドバイスが付きやすくなる気がします。

極端な例でいえば、N項目のラベルと項目値をN×2の格子に配置するような場合、VBoxに複数のHBoxを並べHBoxの各ノードの幅を調べて最大のものに全ての横幅をそろえるなんてことを自前でやろうとしているなら、「GridPaneを用いる方が適切」というようなアドバイスがつくと思います。

投稿2018/10/21 04:40

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問