JavaFX listview multi selection

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
分享
二维码
< <上一篇
下一篇>>