javafx8 TableView Multiselection将所选项之一返回为null
发布时间:2020-12-15 00:36:08 所属栏目:Java 来源:网络整理
导读:TableView多选项将所选对象之一返回为null.这种情况不会每次都发生,但是当我尝试在table. similar to the issue defined in this question中选择两行时,大多数情况都会发生这种情况 重现问题的最佳方法是尝试选择两个连续的行. FXML: ?xml version="1.0" en
TableView多选项将所选对象之一返回为null.这种情况不会每次都发生,但是当我尝试在table.
similar to the issue defined in this question中选择两行时,大多数情况都会发生这种情况
重现问题的最佳方法是尝试选择两个连续的行. <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.ProgressBar?> <?import javafx.scene.control.TableColumn?> <?import javafx.scene.control.TableView?> <?import javafx.scene.control.TextField?> <?import javafx.scene.control.cell.PropertyValueFactory?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.Region?> <?import javafx.scene.layout.StackPane?> <AnchorPane xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.test.controller.TestController"> <children> <TableView fx:id="personsTable" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="35.0"> <placeholder> <Label text="" /> </placeholder> <columns> <TableColumn text="Name"> <cellValueFactory> <PropertyValueFactory property="name" /> </cellValueFactory> </TableColumn> <TableColumn text="Address"> <cellValueFactory> <PropertyValueFactory property="address" /> </cellValueFactory> </TableColumn> <TableColumn text="Course"> <cellValueFactory> <PropertyValueFactory property="course" /> </cellValueFactory> </TableColumn> <TableColumn text="Country"> <cellValueFactory> <PropertyValueFactory property="country" /> </cellValueFactory> </TableColumn> </columns> </TableView> </children> </AnchorPane> 控制器: import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import com.test.model.Person; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; import javafx.scene.control.SelectionMode; import javafx.scene.control.TableView; public class TestController implements Initializable { @FXML TableView<Person> personsTable = new TableView<Person>(); @Override public void initialize(URL location,ResourceBundle resources) { // TODO Auto-generated method stub MenuItem combine = new MenuItem("Select"); combine.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { List<Person> selectedPersons = new ArrayList<Person>( personsTable.getSelectionModel().getSelectedItems()); for (Person person : selectedPersons) { System.out.println(" the object is " + person); } } }); ContextMenu contextMenu = new ContextMenu(); contextMenu.getItems().add(combine); personsTable.setContextMenu(contextMenu); personsTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); personsTable.setItems(getPendingOrders()); } public ObservableList<Person> getPendingOrders() { ObservableList<Person> persons = FXCollections.observableArrayList(); for (int i = 0; i < 100; i++) { Person person = new Person(); person.setName("Name" + i); person.setAddress("Address" + i); person.setCountry("Country" + i); person.setCourse("Course" + i); persons.add(person); } return persons; } } 型号: public class Person { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } private String name; private String address; private String country; private String course; } 解决方法
1:向TableView添加默认单元工厂
2:覆盖updateItem或updateIndex 希望它有所帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |