我有以下代码来创建自定义 表 。但是在输出中它显示了许多行,它们不包含任何值。我想只显示两行一列。是否有任何解决方案,否则Javafx默认生成此。有没有其他方法来创建表。可能正在使用 GridPaneBuilder
private TableView<Person> table = new TableView<Person>();
private final ObservableList<Person> data =
FXCollections.observableArrayList(
new Person("Jacob"),
new Person("Isabella")
);
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample");
stage.setWidth(450);
stage.setHeight(500);
final Label label = new Label("Address Book");
label.setFont(new Font("Arial", 20));
table.setEditable(true);
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName"));
table.setItems(data);
table.getColumns().addAll(firstNameCol);
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(label, table);
((Group) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene(scene);
stage.show();
}
public static class Person {
private final SimpleStringProperty firstName;
private Person(String fName) {
this.firstName = new SimpleStringProperty(fName);
}
public String getFirstName() {
return firstName.get();
}
public void setFirstName(String fName) {
firstName.set(fName);
}
}
答案 0 :(得分:0)
您可以通过以下方式设置列占用尽可能多的空间:
myTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
我不知道是否有一种简单的方法可以根据行数设置表的高度,但您可以根据行数乘以rowHeight来设置表的maxHeight:
myTable.setMaxHeight(countOfRows * rowHeight + headerHeight);
更灵活的方法是使用JavaFX绑定,因此当您添加或删除行时,表的高度会发生变化。