3

JavaFX のレイアウトを理解するのに問題があります。次のコードを検討してください。

ステージ {
    タイトル:「ListViewテスト」
    シーン: シーン {
        幅: 400
        高さ: 400
        コンテンツ: [
            V ボックス {
                コンテンツ: [
                    リストビュー {
                        高さ: 200
                        幅: 200
                        アイテム: [「アイテム1」、「アイテム2」]
                    }
                ]
            }
        ]
    }
}

ListView が 200 x 200 のサイズで表示されることを期待していましたが、これをどのように修正しようとしても、ListView の幅と高さが固定されているように見えました。しかし、次のコードは、意図したとおりに ListView を表示するために機能します。

ステージ {
    タイトル:「ListViewテスト」
    シーン: シーン {
        幅: 400
        高さ: 400
        コンテンツ: [
            リストビュー {
                高さ: 200
                幅: 200
                アイテム: [「アイテム1」、「アイテム2」]
            }
        ]
    }
}

それで、ここで何が問題なのですか?レイアウト内で ListView を使用できませんか?

4

2 に答える 2

3

JavaFX 1.2.xでは、レイアウト内のノードの幅と高さの情報は読み取り用です。「優先」ディメンションを指定する場合は、

ListVIew {
    layoutInfo: LayoutInfo {width: 200, height: 200}
}

これは、優先サイズとしてレイアウトで処理され、コンポーネントはこれに従ってレイアウトされます。NetBeans JavaFX Composerプレビューの経験がある場合は、生成されたコードが特殊な種類のバインディングウィッチを使用して、レイアウトやその他のコンテナ(シーン、グループ)で正しいサイズ設定ができることに気付くかもしれません。

Ad Broken:Java FXのレイアウトはノード上に構築され、グループ/シーンで使用される幾何学的位置に依存しないコンポーネントの配置とサイズ変更にアルゴリズムアプローチを使用します。残念ながら、1.2では、初心者にとって誤解を招くような、ある種の二重性がもたらされます。

于 2010-04-12T06:53:17.563 に答える
1

レイアウトノードでは、子の位置とサイズを変更できます。子供の幅と高さを設定し、レイアウトが新しい値を尊重することになっていることを期待するだけでは良くありません。必要なのは、尊重したい値をレイアウトノードに伝える方法です。LayoutInfoクラスとNodeのlayoutInfo変数を見てください。

于 2010-04-11T10:03:47.227 に答える