JavaFX中List View提供了一个可视化的列表形式,可直观的显示数据。
AnchorPane an = new AnchorPane();
VBox vbox = new VBox();
ObservableList<String> list = FXCollections.observableArrayList();
list.add("姓名:杨先生 年龄:18 性别:男");
list.add("姓名:杨女生1 年龄:18 性别:女");
list.add("姓名:杨女生2 年龄:18 性别:女");
list.add("姓名:杨女生3 年龄:18 性别:女");
list.add("姓名:杨女生4 年龄:18 性别:女");
ListView<String> listview = new ListView<String>();
//占位符 当listview没有数据时显示占位符
listview.setPlaceholder(new Label("没有数据"));
//添加一个可观测的列表显示
listview.setItems(list);
Button b2 = new Button("删除选中数据");
vbox.getChildren().addAll(b2);
//设置可多选
listview.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
//设置默认选择项
listview.getSelectionModel().select(0);
b2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//获得ListView中选中数据的可视化集合
ObservableList<String> list1 = listview.getSelectionModel().getSelectedItems();
list.removeAll(list1);
}
});
//单选事件 item的监听
listview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
// TODO Auto-generated method stub
System.out.println(newValue);
}
});
//单选事件 索引的监听
listview.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
// TODO Auto-generated method stub
System.out.println(newValue.intValue());
}
});
//TODO:设置可编辑
listview.setEditable(true);
//直接对数据源进行修改
listview.setCellFactory(TextFieldListCell.forListView());
//设置单元格尺寸
listview.setFixedCellSize(50);
an.getChildren().addAll(listview,vbox);
AnchorPane.setTopAnchor(listview, 50.0);
AnchorPane.setLeftAnchor(listview, 30.0);
Scene scene = new Scene(an);
primaryStage.setScene(scene);
primaryStage.setTitle("javafx");
primaryStage.setHeight(500);
primaryStage.setWidth(500);
primaryStage.show();
运行效果如下:
- 当listview中可视化集合包含重复元素时,使用鼠标选中一个元素使用如上删除按钮的方法进行删除时所有相同元素都将被删除
- 解决办法获取选中元素的索引根据索引进行删除
学习至B站up主Aimls