如何将我的列表绑定到 JavaFX 中的 TableView?
How I can bind my List to a TableView in JavaFX?
我想在 javaFX 中将 TableView 与列表一起使用。它工作到 90%。
我的问题是,如果我将数据加载到 TableView,第二行与第一行相同...我认为我的 foreach 有问题。
这是我的代码:
@FXML
private TableView<Ticket> tblTicket = new TableView<>();
...
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
...
tblTicket.getColumns().addAll(Ticket.getColumn(tblTicket));
tblTicket.setItems(getTicketData());
} catch (Exception e) {
...
}
}
...
public ObservableList<Ticket> getTicketData() {
//Eine Liste mit allen Tickets
ObservableList<Ticket> ticketData = FXCollections.observableArrayList();
ticketData.setAll(new Ticket("1", "Fehler 1", "Meier_A", "01.02.2015", "Offen"));
ticketData.setAll(new Ticket("2", "Fehler 2", "Schmidt_W", "01.02.2015", "In Bearbeitung"));
ticketData.setAll(new Ticket("3", "Fehler 3", "Tarasov_W", "01.02.2015", "Geschlossen"));
return ticketData;
}
...
我在这个视频中做到了,但我的 table 是空的。
我认为你只需要在你的 initialize() 中设置这样的东西而不是 for 循环并且在 ticketData.size()>0
中没有必要
public void initialize(){ //added after James_D comment about initialize()
clmID.setCellValueFactory(new PropertyValueFactory<>("ticketId"));
clmTicketName.setCellValueFactory(new PropertyValueFactory<>("ticketName"));
clmLastName.setCellValueFactory(new PropertyValueFactory<>("ticketLastName"));
clmCategory.setCellValueFactory(new PropertyValueFactory<>("ticketCategory"));
clmFirstName.setCellValueFactory(new PropertyValueFactory<>("ticketFirstName"));
}
编辑:
这里是演示:
https://github.com/varren/How-I-can-bind-my-List-to-a-TableView-in-JavaFX/tree/master/src/sample
这是教程:
https://docs.oracle.com/javafx/2/fxml_get_started/fxml_tutorial_intermediate.htm#CACFEHBI
我想在 javaFX 中将 TableView 与列表一起使用。它工作到 90%。
我的问题是,如果我将数据加载到 TableView,第二行与第一行相同...我认为我的 foreach 有问题。
这是我的代码:
@FXML
private TableView<Ticket> tblTicket = new TableView<>();
...
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
...
tblTicket.getColumns().addAll(Ticket.getColumn(tblTicket));
tblTicket.setItems(getTicketData());
} catch (Exception e) {
...
}
}
...
public ObservableList<Ticket> getTicketData() {
//Eine Liste mit allen Tickets
ObservableList<Ticket> ticketData = FXCollections.observableArrayList();
ticketData.setAll(new Ticket("1", "Fehler 1", "Meier_A", "01.02.2015", "Offen"));
ticketData.setAll(new Ticket("2", "Fehler 2", "Schmidt_W", "01.02.2015", "In Bearbeitung"));
ticketData.setAll(new Ticket("3", "Fehler 3", "Tarasov_W", "01.02.2015", "Geschlossen"));
return ticketData;
}
...
我在这个视频中做到了,但我的 table 是空的。
我认为你只需要在你的 initialize() 中设置这样的东西而不是 for 循环并且在 ticketData.size()>0
public void initialize(){ //added after James_D comment about initialize()
clmID.setCellValueFactory(new PropertyValueFactory<>("ticketId"));
clmTicketName.setCellValueFactory(new PropertyValueFactory<>("ticketName"));
clmLastName.setCellValueFactory(new PropertyValueFactory<>("ticketLastName"));
clmCategory.setCellValueFactory(new PropertyValueFactory<>("ticketCategory"));
clmFirstName.setCellValueFactory(new PropertyValueFactory<>("ticketFirstName"));
}
编辑:
这里是演示: https://github.com/varren/How-I-can-bind-my-List-to-a-TableView-in-JavaFX/tree/master/src/sample
这是教程: https://docs.oracle.com/javafx/2/fxml_get_started/fxml_tutorial_intermediate.htm#CACFEHBI