[解決済み] JavaFXによるGridPane内のラベルの整列
質問
Label.setAlignment(Pos.CENTER_RIGHT) を設定しても、GridPaneに追加されるラベルのアライメントに影響しないのはなぜでしょうか?このような場合、グリッド(ColumnConstraintsなど)を通して、または、右寄せのHBoxにラベルを追加する方法しかないようです。
ラベルのアライメントをCENTER_RIGHTに設定しても効果がないのはなぜですか?APIによると、"Labeled内に空のスペースがある場合に、Labeled内のテキストとグラフィックをどのように整列させるかを指定します。
どのように解決するのですか?
TL:DR版
の代わりに
label.setAlignment(Pos.CENTER_RIGHT);
使用
GridPane.setHalignment(label, HPos.RIGHT);
.
JavaFXでは、トップダウン方式のレイアウトを採用しています。そのため、シーンはルートノードをシーンのサイズに合わせ、ルートノードはレイアウト戦略とシーンが与えたスペースの量に応じて子ノードのサイズと位置を決め、各子ノードは自身のレイアウト戦略と利用できるスペースの量に応じて子ノードのサイズと位置を決め、そうしてシーングラフを下へ下へと進んでいきます。
のドキュメントによると
Label
は、その
alignmentProperty
Labeled内のテキストやグラフィックが空いたときに、どのように整列させるかを指定します。
もちろん、ラベルが利用できるスペースの量は、その親(この場合、グリッドペイン)によって決定されます。グリッドペインのレイアウト戦略や設定方法については、グリッドペインの ドキュメント . 簡単に言えば、ですが。
デフォルトでは、グリッドペインは各ノードに好みのサイズを割り当て、配置されたセルに余分なスペースがある場合は、ノードをグリッドセルの左上に配置します。ラベルの好ましいサイズは、もちろん計算されたサイズであり、その内容を保持するのに十分な大きさです。したがって、単純にラベルをグリッドペインに配置し、ラベルのアライメントを設定しても、ラベルはそのコンテンツを保持するのに十分な大きさであり、テキストやグラフィックを配置するための余分なスペースがないため、何の効果もないことがわかります。このことは、ラベルに背景色やボーダーを配置することで視覚化することができます。
そこで、ラベルのアライメントを
CENTER_RIGHT
そして、グリッドペインにラベルを成長させるように指示します。まず、セルの幅いっぱいにラベルを表示するようにグリッドペインに指示します。
GridPane.setFillWidth(label, true);
で、グリッドペインは子ノードの最大サイズを尊重し、ラベルはデフォルトでその好ましいサイズを最大サイズとして使用するので、ラベルが成長することを許可します。
label.setMaxWidth(Double.MAX_VALUE);
そうすると、ラベルはセルの大きさに合わせて大きくなるので、さらに
label.setAlignment(Pos.CENTER_RIGHT);
は、それ自身のコンテンツを右寄せにします。
より賢明な方法は、グリッドペインにセル内のラベルをどのように配置するかを指示することでしょう。
GridPane.setHalignment(label, HPos.RIGHT);
そして、ラベルにデフォルトのサイズとアライメントを適用させれば、すべてがうまくいくでしょう。
また
ColumnConstraints
オブジェクトを使用して、特定の列のすべてのラベルのデフォルトアライメントを設定することができます。
関連
-
[解決済み] JavaFX: キャンバスをクリアする方法
-
[解決済み] JavaFX: 初期化中にコントローラからステージを取得する方法は?
-
[解決済み] javafxでsetOnActionイベントを使用する方法
-
[解決済み] JavaFXです。ChangeListenerの実行
-
[解決済み] JavaFXによるGridPane内のラベルの整列
-
[解決済み] JavaFX Stage/Sceneの自動リサイズ
-
[解決済み] クリック可能なラベルを持つチェックボックスを作成するには?
-
[解決済み】ランチャーにアクティビティタイトルとは別のラベルを設定するには?
-
[解決済み】 パラメータの受け渡し JavaFX FXML
-
[解決済み] iOS 6のラベルアライメント - UITextAlignmentは非推奨です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン