3

私はSwingに慣れていて、今はFXから始めています。Oracleの「Working With Layouts in JavaFX」ガイドを読んだり、インターネットで調査したりしても答えが見つからないという質問に出くわしました。

GridPane クラスの FX API ガイドには、オブジェクトのレイアウトに関する例があります。

http://docs.oracle.com/javafx/2/api/javafx/scene/layout/GridPane.htmlからの抜粋: GridPane gridpane = new GridPane();

 // Set one constraint at a time...
 Button button = new Button();
 GridPane.setRowIndex(button, 1);
 GridPane.setColumnIndex(button, 2);

...

 // don't forget to add children to gridpane
 gridpane.getChildren().addAll(button, label);

行と列の情報は、GridPane の静的メソッドを介して設定されます。これは、ドキュメントにも記載されています。このレイアウト制約がノード オブジェクト (この場合はボタン) にバインドされている場所を理解したいと思います。

Node API のドキュメントには、レイアウトの制約については言及されていません。GridPane オブジェクトの列などの制約の設定に関する多くの情報を見つけましたが、これに関する詳細情報は見つかりませんでした。

では、行/列の情報はどのようにボタンにバインドされているのでしょうか、または適用後にボタンからこの情報を取得するにはどうすればよいでしょうか?

最高の卒業生ギュンター

4

1 に答える 1

3

javaFX ソース コードを読むと、 GridPaneの setRowIndex と setColumnIndex は、次のようなスーパークラスPaneの setConstraint メソッドを使用します。

static void setConstraint(Node node, Object key, Object value) {
        if (value == null) {
            node.getProperties().remove(key);
        } else {
            node.getProperties().put(key, value);
        }
        if (node.getParent() != null) {
            node.getParent().requestLayout();
        }
    }

そのため、情報はノードに直接保存されます。

于 2013-06-17T08:20:18.000 に答える