JavaFX listview multi selection
•
Java
I want to select multiple items from listview It responds to mouse clicks I tried this:
selectedLogsList.addAll(logsListView.getSelectionModel().getSelectedItems());
But it gave me repetition So I tried this:
logsListView.getSelectionModel().selectedItemproperty().addListener( new changelistener<String>() { @Override public void changed(ObservableValue<? extends String> ov,String old_val,String new_val) { if(selectedLogsList.contains(new_val)) { selectedLogsList.remove(new_val); } else { selectedLogsList.add(new_val); } } });
I also want to, if the cell is selected, it should be marked with (different background color). Thank you!
Solution
If you just want to know which items are selected, please check my example Look at the setonmouseclicked () method
package application; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.Event; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.Pane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { try { Pane root = new Pane(); Scene scene = new Scene(root,600,600); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); ListView<String> listView = new ListView<String>(); ObservableList<String> list = FXCollections.observableArrayList(); listView.setItems(list); list.add("item1"); list.add("item2"); list.add("item3"); listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listView.setOnMouseClicked(new EventHandler<Event>() { @Override public void handle(Event event) { ObservableList<String> selectedItems = listView.getSelectionModel().getSelectedItems(); for(String s : selectedItems){ System.out.println("selected item " + s); } } }); list.add("item4"); root.getChildren().add(listView); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码