JavaFX ListView多选

前端之家收集整理的这篇文章主要介绍了JavaFX ListView多选前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从ListView中选择多个项目.它会对鼠标点击做出反应.我试过这个:
selectedLogsList.addAll(logsListView.getSelectionModel().getSelectedItems());

但它给了我重复.
所以我尝试了这个:

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);
                    }
        }
    });

我也想,如果选择了单元格,它应该被标记为(不同的背景颜色)
谢谢!

解决方法

如果您只想知道选择了哪些项目,请查看我的示例.看看setOnMouseClicked()方法..
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);
        }
    }
原文链接:https://www.f2er.com/java/126367.html

猜你在找的Java相关文章