在JavaFX TableView中设置行高

Fer*_*deh 8 java javafx-2

如何在JavaFX表View中设置行高?我试图通过使用CSS来增加它,但这不起作用:

.table-row{
    line-height: 50px;
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以解决这个问题?

Crf*_*ira 16

您可以使用

.table-row-cell {
    -fx-cell-size: 50px;
}
Run Code Online (Sandbox Code Playgroud)

.table-row-cell是分配给表行的类,如capian.cssjfxrt.jar中所述(com/sun/javafx/scene/control/skin/caspian/caspian.css):

表中的每一行都是一个表行单元格.表格 - 单元格内部是任意数量的表格单元格.

并且-fx-cell-size,在这种情况下,是行高(实际上,每个单元格高度),如Oracle的JavaFX CSS参考指南中所确认的那样

-fx-cell-size:单元格大小.对于垂直ListView或TreeView或TableView,这是高度,对于水平ListView,这是宽度.

我在以下示例中尝试了上面的解决方案:

PetsTable :(注意使用scene.getStylesheets().add("styles/styles.css");,定义要使用的css文件)

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;

public class PetsTable extends Application {

    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Group());
        stage.setTitle("Pets");
        stage.setWidth(200);
        stage.setHeight(200);

        ObservableList<Pet> data = FXCollections.observableArrayList(new Pet("Kitty", "Susan"), 
                new Pet("Ploft", "Jackob"));
        TableView<Pet> table = new TableView<Pet>();

        TableColumn name = new TableColumn("Name");
        name.setMinWidth(100);
        name.setCellValueFactory(new PropertyValueFactory<Pet, String>("name"));

        TableColumn owner = new TableColumn("Owner");
        owner.setMinWidth(100);
        owner.setCellValueFactory(new PropertyValueFactory<Pet, String>("owner"));

        table.setItems(data);
        table.getColumns().addAll(name, owner);

        ((Group) scene.getRoot()).getChildren().addAll(table);

        /**********************************************/
        /********* Setting the css style file *******/
        /**********************************************/
        scene.getStylesheets().add("styles/styles.css");

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

    public static class Pet {

        private final SimpleStringProperty name;
        private final SimpleStringProperty owner;

        private Pet(String name, String owner) {
            this.name = new SimpleStringProperty(name);
            this.owner = new SimpleStringProperty(owner);
        }

        public String getName() {
            return name.get();
        }

        public String getOwner() {
            return owner.get();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

styles.css的:

.table-row-cell {
    -fx-cell-size: 50px;
}
Run Code Online (Sandbox Code Playgroud)