質問するログイン新規登録

Q&A

解決済

1回答

2575閲覧

JavaFXにおけるTableViewを用いた複数選択・値取得

junkjunk

総合スコア26

JavaFX

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

0グッド

0クリップ

投稿2019/07/05 00:54

0

0

JavaFXでTableViewを作成しているのですが、ウィンドウに表示させた時にどのように複数選択出来る仕様に設定するのかわからないです。

調べてもCtrlキーを使わずに複数選択するにはどうすればいいか、などが大半なのですが、TableViewはもとから複数選択出来る仕様なのでしょうか?自分が出力したものはCtrlキーを用いても複数選択することが出来ません。
また、TableViewで複数選択した場合の値取得の方法も教えて頂けると助かります。

よろしくお願い致します。

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

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

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

guest

回答1

0

ベストアンサー

複数選択可能です。
テーブル名.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
としてください。
配列Listとして以下から受け取ってください。
テーブル名.getSelectionModel().getSelectedItems();

投稿2019/07/05 01:04

編集2019/07/05 05:34
ababa_Sigrun

総合スコア281

junkjunk

2019/07/05 04:50

ありがとうございます。 回答していただいた内容を実行したところ複数選択可能になりました。 値取得についてですが、 ObservableList<AAA> selected = table.getSelectionModel().getSelectedItems(); String[] str = (String[]) selected.toArray(new String[selected.size()]); のように記述したところエラーをはいてしまいうまくまわりません。ObservableListを配列型に変換すればいいのかと思ったのですが、どこか間違っているでしょうか? また、System.out.println(table.getSelectionModel().getSelectedItems());を確認したところapplication.AAA@2e70a813、…のような中身となっていたのですが、これは実際のカラムに表記されている文字列ではなくカラムそのものの情報を表示しているのでしょうか?
ababa_Sigrun

2019/07/05 05:20

List型を継承してるので ObservableList<AAA> selected = table.getSelectionModel().getSelectedItems(); for(AAA item : selected ){ item ; } として選択したAAAを一件ずつ取得できます。
junkjunk

2019/07/05 06:51

度々すみません。 おそらく選択したデータをListに格納することが出来たのですが、TableViewに表示されている文字をそのまま出力させるにはどのようにすればいいんでしょうか?
ababa_Sigrun

2019/07/05 07:34 編集

先ほどのコードでいうならばitem内の 対応する項目を取得してください。 このように書いてあるところが対応関係にあたります。 this.YYY.setCellValueFactory(new PropertyValueFactory<>("XXX")); ObservableList<AAA> selected = table.getSelectionModel().getSelectedItems(); for(AAA item : selected ){ item.getXXX() ; }
junkjunk

2019/07/05 07:56

ありがとうございます。 おそらく自分のコードで何かの際にエラーを消すためにtable内のデータをString型ではなくStringPropertyのプロパティファイルで用意していたので、出力結果が StringProperty [value: hogehoge] のようになっているんだと思います。 ひとまず、複数選択と選択した行のみの出力について教えて頂いてありがとうございました。非常に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問