将 ObservableList 插入 TableView JavaFX
Insert ObservableList into a TableView JavaFX
我想将所有囚犯数据显示到一个 TableView 中。
一个囚犯看起来像那样(所有代码都是示例):
public class Prisoner {
private String id;
private String name;
private PrisonerCase case;
Prisoner() {
id = "Unknown";
name = "Unknown";
case = new PrisonerCase();
}
}
public class PrisonerCase {
private String id_case;
private String date_case;
PrisonerCase() {
id_case = "unknown";
date_case = "unknown";
}
}
然后我有我的 TableView :
数据是 ObservableList<Prisoner>
和 return 我数据库中的所有囚犯。我在函数 getData()
.
中构建了所有囚犯和所有囚犯案件
TableView tv = new TableView();
data = Database.getData();
TableColumn id_column = new TableColumn("ID");
id_column.setCellValueFactory(new PropertyValueFactory<Prisoner, String>("id"));
这很好用,但我的问题是,如何在 TableView 中添加大小写?
我试过了
TableColumn n_case_column = new TableColumn("N° Case");
n_case_colmun.setCellValueFactory(new PropertyValueFactory<PrisonerCase, String>("id_case"));
但是没用。
当然,最后我没有忘记将所有列添加到 TableView 中。
tv.setItems(data);
tv.getColmuns().addAll(id_column, n_case_column);
首先,从不使用原始类型。 TableView
的类型是表示每一行的对象的类型(在本例中为 Prisoner
)。 TableColumn
的类型首先是 TableView
的类型,其次是该列中每个单元格中显示的数据的类型。
所以你应该
TableView<Prisoner> tv = new TableView<>();
TableColumn<Prisoner, String> idColumn = new TableColumn<>("ID");
TableColumn<Prisoner, String> nCaseColumn = new TableColumn<>("N° Case");
您没有在 类 中显示方法;我将假设您遵循标准 Java naming conventions(我也更改了上面的一些变量名称以符合这些名称)。然后你可以做
idColumn.setCellValueFactory(cellData ->
new SimpleStringProperty(cellData.getValue().getId()));
// or
// idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
// but the first version above is better, imho
nCaseColumn.setCellValueFactory(cellData ->
new SimpleStringProperty(cellData.getValue().getCase().getIdCase()));
我想将所有囚犯数据显示到一个 TableView 中。 一个囚犯看起来像那样(所有代码都是示例):
public class Prisoner {
private String id;
private String name;
private PrisonerCase case;
Prisoner() {
id = "Unknown";
name = "Unknown";
case = new PrisonerCase();
}
}
public class PrisonerCase {
private String id_case;
private String date_case;
PrisonerCase() {
id_case = "unknown";
date_case = "unknown";
}
}
然后我有我的 TableView :
数据是 ObservableList<Prisoner>
和 return 我数据库中的所有囚犯。我在函数 getData()
.
TableView tv = new TableView();
data = Database.getData();
TableColumn id_column = new TableColumn("ID");
id_column.setCellValueFactory(new PropertyValueFactory<Prisoner, String>("id"));
这很好用,但我的问题是,如何在 TableView 中添加大小写? 我试过了
TableColumn n_case_column = new TableColumn("N° Case");
n_case_colmun.setCellValueFactory(new PropertyValueFactory<PrisonerCase, String>("id_case"));
但是没用。 当然,最后我没有忘记将所有列添加到 TableView 中。
tv.setItems(data);
tv.getColmuns().addAll(id_column, n_case_column);
首先,从不使用原始类型。 TableView
的类型是表示每一行的对象的类型(在本例中为 Prisoner
)。 TableColumn
的类型首先是 TableView
的类型,其次是该列中每个单元格中显示的数据的类型。
所以你应该
TableView<Prisoner> tv = new TableView<>();
TableColumn<Prisoner, String> idColumn = new TableColumn<>("ID");
TableColumn<Prisoner, String> nCaseColumn = new TableColumn<>("N° Case");
您没有在 类 中显示方法;我将假设您遵循标准 Java naming conventions(我也更改了上面的一些变量名称以符合这些名称)。然后你可以做
idColumn.setCellValueFactory(cellData ->
new SimpleStringProperty(cellData.getValue().getId()));
// or
// idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
// but the first version above is better, imho
nCaseColumn.setCellValueFactory(cellData ->
new SimpleStringProperty(cellData.getValue().getCase().getIdCase()));