JavaFXでリストビューを複数選択モードにする方法について記載します。
目次
リストビューを複数選択モードにする方法
1. 複数選択モードにする方法
複数選択モードにするには、setSelectionModeメソッドを使用します。
構文
ListView<String> listView = new ListView<>();
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { // ListView ListView<String> listView = new ListView<>(); listView.getItems().addAll("apple","orange","banana"); listView.setMaxWidth(100); listView.setMaxHeight(150); // 複数選択 listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // 配置 VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10); vbRoot.getChildren().addAll(listView); pStage.setTitle("リストビュー"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(vbRoot)); pStage.show(); } } |
2. 複数選択された項目を取得する方法
クリックイベントを登録して選択された項目を取得します。
クリックイベントを登録するには、setOnMouseClicked メソッドを使用します。
実行例
クリックするとダイアログが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import javafx.application.Application; import javafx.collections.ObservableList; import javafx.event.Event; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { ListView<String> listView = new ListView<>(); public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { // ListView listView.getItems().addAll("apple","orange","banana"); listView.setMaxWidth(100); listView.setMaxHeight(150); // 複数選択 listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // クリックイベントを登録 listView.setOnMouseClicked(new ActionListView()); // 配置 VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10); vbRoot.getChildren().addAll(listView); pStage.setTitle("リストビュー"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(vbRoot)); pStage.show(); } // リストビューのアクション class ActionListView implements EventHandler<Event>{ @Override public void handle(Event event) { // インデックスを取得 ObservableList<Integer> selectedIndices = listView.getSelectionModel().getSelectedIndices(); // 項目の名前を取得 ObservableList<String> selectedItems = listView.getSelectionModel().getSelectedItems(); String selectItems = ""; for( int i = 0; i < selectedIndices.size(); i++ ) { selectItems += "index:" + selectedIndices.get(i) + ", name:" + selectedItems.get(i) + "、"; } // 表示 Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("イベント"); alert.setContentText( "選択された項目:" + selectItems ); alert.show(); } } } |
3. リストビューの使い方のまとめ
リストビューの使い方のまとめについては、次の記事を参照してください。