libro
www.tuyano.com
初心者のためのJavaFXプログラミング入門

ListViewとSelectionModel (4/5)

作成:2014-12-20 13:26
更新:2014-12-20 13:26

■SelectionModelについて

先ほどのサンプルでは、setOnMouseClickで、選択された項目のテキストを取り出すのに以下のような処理をしていました。
String obj = list1.getSelectionModel()
    .getSelectedItem();

getSelectionModelというものを呼び出し、それで返されるインスタンス内のgetSelectedItemというメソッドを呼び出しています。これで、選択された項目のオブジェクトが取得できたのです。これは、ListViewの「SelectionModel」というものを理解しないと何をしているかわからないでしょう。

SelectioModel」というのは、選択された項目を管理する「モデルクラス」です。JavaFXでは、さまざまなデータを管理するのに「モデル」という概念を導入しています。モデルは動的に操作するデータを管理するためのものです。

選択された項目は、SelectionModelというモデルクラスを使って管理されます。ListViewの「getSelectionModel」メソッドを呼び出すことで、そのListViewに組み込まれているSelectionModelインスタンスを得ることができます。

SelectionModelクラスには、選択項目に関する各種のメソッドが用意されています。ここでは「getSelectedItem」というメソッドを使っていますね。これは、選択された項目のインスタンスを返すメソッドです。これで項目のオブジェクトを取得し、そこから表示されたテキストなどを取り出せばいい、というわけです。


●保管する値と総称型について
ListViewは、総称型に対応しています。先ほどのサンプルコードを見ると、ListViewの値を保管するフィールドが以下のように変更されているのに気づいた人もいるでしょう。
@FXML ListView<String> list1;

このように<String>を追記することで、保管する値をStringに限定することができます。getSelectedItemで値を直接String変数に代入したのも、総称型を使ったおかげなのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのJavaFXプログラミング入門」に戻る