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

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

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

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

FXML

FXMLは、JavaFXに用意されているXMLベースのGUI記述言語です

Q&A

解決済

1回答

4871閲覧

JavaFXにおいて、コントロールの配列に対しfxmlで格納先を指定する方法が存在するか?

masaya_ohashi

総合スコア9206

JavaFX

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

FXML

FXMLは、JavaFXに用意されているXMLベースのGUI記述言語です

0グッド

1クリップ

投稿2017/02/07 01:14

fxml上でfx:idで指定した名称のコントロールは、コントローラ上の同名のプロパティに対し格納されるのですが、これが配列でやりたいのです。

Java

1public class Controller { 2 @FXML 3 private Label labelSingle; // これは一般的 4 @FXML 5 private Label[] labelArray; // こういうことがやりたい 6}

以下のように、一度プロパティに入れた後に配列に入れ直すことで実現は可能なのですが、スマートでなく気に入っておりません…

Java

1public class Controller implements Initializable { 2 @FXML 3 private Label labelA; 4 @FXML 5 private Label labelB; 6 @FXML 7 private Label labelC; 8 9 private Label[] labelArray; 10 @Override 11 public void initialize(URL location, ResourceBundle resources) { 12 labelArray = new Label[3]; 13 labelArray[0] = labelA; 14 labelArray[1] = labelB; 15 labelArray[2] = labelC; 16 } 17}

なにがいやかというと、このlabelAなどが大量に生まれてしまい、変数宣言部が冗長になってしまうのが気に食わないのです。「できない」と言われたら我慢するしかないのですが、私が知らないだけで実はfxmlで指定する方法がある、プロパティへのマッピングをオーバーライドする方法がある等情報を求めています。無理なら無理という情報も欲しいです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

すいません…質問書いた直後に見つけてしまいました…
fxml上でfx:defineとfx:referenceを使えば実現できるそうです。

http://stackoverflow.com/questions/28587297/create-array-of-label-using-fxml-in-javafx

###追記
このやり方はSceneBuilderで編集をサポートしていませんでしたので、他の案を募集するために未解決に戻します。
直接fxmlを編集すればできますが、これもスマートでは無いと思います…

###追記2
とくになにも案が出てこないので自己解決で終了します…

投稿2017/02/07 01:19

編集2017/02/10 03:18
masaya_ohashi

総合スコア9206

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

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

KSwordOfHaste

2017/02/07 03:11

そんな方法もあるんですね・・・ ちなみにScenebuilderがこれを読み書きできるかがちょっと気にはなりましたw;
masaya_ohashi

2017/02/07 04:04

fx:defineやfx:referenceをSceneBuilderで編集する術はありませんでした…書いてても読み込むことはできますが、SceneBuilder上のどこにも表示されません。
KSwordOfHaste

2017/02/07 04:14 編集

そうでしたか。ただSceneBuilderでサポートしていないFXML構文も多いので、SceneBuilder編集前後で壊れさえしなければ上の対応でもいいのではないでしょうか? 個人的にはSceneBuilderは充分安定していない印象なので例えばSpinnerのValueFactoryなどはイマイチと思いつつもFXML上ではなくコードで書いてしまってます。saveも頻繁にやる癖がつきましたw; しかしそこは工夫次第で、初期レイアウトをSceneBuilderでやって細かな点は手書きという方法でもアリと思います。将来SceneBuilderがも少しエンハンスされることを期待して・・・という感じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問