0

恐ろしく一般的な GridPane 名を許してください...これについての入力があればすぐに変更されます。

項目を GridPane に追加しています。ボタン、ラベルが必要です...この int 以外はほとんど何でも必要です。

        int[] listObjA = {312,23,241};

        GridPane gridpane = new GridPane();

        gridpane.add(new Label("Item Listing"), 1, 1);
        gridpane.add(listObjA[0], 1, 2);

もちろんそのままだと「intはNodeに変換できない」とのこと。何かアドバイス?Java で単純に変数を出力することがいかに困難であったかについて、私は当惑しています。ちなみに、連続して変更するメソッドがあるため、変数でなければなりません。単純に new Label("312") に変更することはできません。

4

3 に答える 3

0

Java は厳密に型指定された言語です。intがある種の UI コンポーネントであるというふりをすることはできません。

配列の各要素のラベルを作成します。

int[] listObjA = {312,23,241};

GridPane gridpane = new GridPane();

gridpane.add(new Label("Item Listing"), 0, 0);

for (int i = 0 ; i < listObjA.length; i++) {
    Label label = new Label(Integer.toString(listObjA[i]));
    gridpane.add(label, i+1, 0);
}
于 2016-03-26T04:19:30.390 に答える
0

配列の要素をint[] listObjA = {312,23,241};ノード タイプとして解決できません。それを使用する代わりに、次のように使用できます

           Label firstLabel=new Label("312");
           Label secondLabel=new Label("23");
           Label thirdLabel=new Label("241");
           gridpane.add(firstLabel, x, y);
           gridpane.add(secondLabel, x,y);
           gridpane.add(thirdLabel, x, y);

x 、 y は変数であり、ノードを挿入する場所に位置が含まれます。

于 2016-03-26T03:54:16.763 に答える
0

データ構造に値を割り当ててラベルのテキストを変更する必要がある場合は、プログラムの他の部分への変更の通知をサポートするデータ構造が必要です。ObservableListそのようなデータ構造の1つになります。Labelバインディング API を使用して、 内のテキストをObservableListのコンテンツにバインドするように変更できます。

ObservableList<Integer> observableList = FXCollections.observableList(Arrays.asList(312, 23, 241));

GridPane gridpane = new GridPane();

gridpane.add(new Label("Item Listing"), 0, 0);

for (int i = 0, size = observableList.size(); i < size; i++) {
    Label l = new Label();
    // bind text to content at list position
    l.textProperty().bind(Bindings.valueAt(observableList, i).asString());
    gridpane.add(l, 0, i + 1);
}

ここでバインディングを作成すると、リストの内容が変更された場合に、ラベルの内容が自動的に更新されます。例えば

Scene scene = new Scene(gridpane);

scene.setOnMouseClicked(new EventHandler<MouseEvent>() {

    private int index;

    @Override
    public void handle(MouseEvent event) {
        int i = index++ % observableList.size();
        observableList.set(i, 10 + observableList.get(i));
    }
});

UI に表示される、マウス クリックで値の 1 つを 10 ずつ増やします。

于 2016-03-26T07:49:48.903 に答える