如何使用自定义行和表格使表格可见柱

时间:2014-10-09 07:33:37

标签: javafx javafx-2 javafx-8

我有以下代码来创建自定义 。但是在输出中它显示了许多行,它们不包含任何值。我想只显示两行一列。是否有任何解决方案,否则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);
    }
}

Output

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式设置列占用尽可能多的空间:

myTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

我不知道是否有一种简单的方法可以根据行数设置表的高度,但您可以根据行数乘以rowHeight来设置表的maxHeight:

myTable.setMaxHeight(countOfRows * rowHeight + headerHeight);

更灵活的方法是使用JavaFX绑定,因此当您添加或删除行时,表的高度会发生变化。