ListView(上)

  • 创建可观察列表并创建ListView

    ObservableList<String> observableList = FXCollections.observableArrayList();  
    observableList.add("data - c");  
    observableList.add("data - e");  
    observableList.add("data - g");  
    observableList.add("data - a");  
    observableList.add("data - x");  
    observableList.add("data - q");  
    observableList.add("data - r");  
    observableList.add("data - w");  
    ListView<String> listView = new ListView<>(observableList);
    

  • 设置无数据时的默认显示listView.setPlaceholder(new Label("无数据"));

  • 设置宽高

    listView.setPrefWidth(300);  
    listView.setPrefHeight(200);
    
  • 设置坐标

    listView.setLayoutX(100);  
    listView.setLayoutY(100);
    
  • 添加元素listView.getItems().add("data - u");

  • 设置排列方向为水平方向listView.setOrientation(Orientation.HORIZONTAL);

  • 设置多选listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

  • 选择索引为0的元素listView.getSelectionModel().select(0);

  • 设置列表元素可编辑

    listView.setEditable(true);  
    listView.setCellFactory(TextFieldListCell.forListView());
    
  • 获取焦点listView.requestFocus();

  • 选择索引为2和4listView.getSelectionModel().selectIndices(2, 4);

  • 添加元素observableList.add("data - add");

  • 选择最后一个listView.getSelectionModel().selectLast();

  • 滚动条滚动到指定位置

    listView.scrollTo(listView.getItems().size()-1);
    listView.scrollTo("data - add");
    listView.scrollTo(3);
    
  • 获取被选中元素的索引listView.getSelectionModel().getSelectedIndex()

  • 获取被选中元素的内容listView.getSelectionModel().getSelectedItems()

  • 点击选项内容改变监听

    listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {  
        System.out.println("newValue = " + newValue);  
    });
    
  • 点击选项索引改变监听

    listView.getSelectionModel().selectedIndexProperty().addListener((observable, oldValue, newValue) -> {  
        System.out.println("newValue = " + newValue);  
    });
    
  • 滚动监听(必须通过调用scrollTo方法才会触发监听)

    listView.setOnScrollTo(new EventHandler<ScrollToEvent<Integer>>() {  
        @Override  
        public void handle(ScrollToEvent<Integer> event) {  
            listView.getItems().remove(0);  
        }  
    });