0

我有与JavaFX TableView 文本对齐相同的问题,但旧解决方案不适用于 JavaFX 8。使用下面的代码,单元格被涂成红色,但对齐仍然存在。“-fx-text-alignment”也不起作用。

main.fxml(相关片段)

<AggregatorTableView id="aggregators"/>

样式.css

#aggregators .table-cell {
    -fx-alignment: CENTER-RIGHT;
    -fx-background-color: red;
}

AggregatorTableView.java

public class AggregatorTableView extends TableView<Aggregator> {
    public AggregatorTableView() {
        TableColumn<Aggregator, Boolean> activeCol = new TableColumn<>("Active?");
        TableColumn<Aggregator, String> nameCol = new TableColumn<>("Name");
        TableColumn<Aggregator, String> resourceCol = new TableColumn<>("Resource");
        TableColumn<Aggregator, String> versionCol = new TableColumn<>("Version");
        activeCol.setCellValueFactory(cdf -> cdf.getValue().isActive());
        activeCol.setCellFactory(CheckBoxTableCell.forTableColumn(activeCol));
        activeCol.setOnEditCommit(e -> e.getRowValue().isActive().set(e.getNewValue()));
        nameCol.setCellValueFactory(cdf -> new SimpleStringProperty(cdf.getValue().getName()));
        resourceCol.setCellValueFactory(cdf -> new SimpleStringProperty(cdf.getValue().getResource()));
        versionCol.setCellValueFactory(cdf -> new SimpleStringProperty(cdf.getValue().getVersion()));
        getColumns().addAll(activeCol, nameCol, resourceCol, versionCol);
        setEditable(true);
        setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
        getItems().add(new Aggregator() {
            private BooleanProperty isActive = new SimpleBooleanProperty(true);
            @Override public String getName() { return "test"; }
            @Override public String getVersion() { return "0.0.1"; }
            @Override public String getResource() { return "test.org"; }
            @Override public List<DataItem> receiveData() { return null; }
            @Override public BooleanProperty isActive() { return isActive; }
        });
    }
}
4

2 回答 2

1

@UlukBiy 提到的解决方案(这里:JavaFX TableView text alignment)适用于我,我正在使用javaFX8。

我刚刚在 FXML 中定义了我的 Tableview,如下所示:

<TableView>
<columns>
    <TableColumn fx:id="couponHash" text="Kortingscode">
    <cellValueFactory><PropertyValueFactory property="hashID" /></cellValueFactory>
    </TableColumn>
    <TableColumn fx:id="couponTimeCreated" text="Aangemaakt op">
    <cellValueFactory><PropertyValueFactory property="timestampCreated" /></cellValueFactory>
    </TableColumn> 
</columns>
</TableView>

FXML 文件连接到一个 css 文件,我只在其中插入了这个样式类:

.table-cell {
    -fx-alignment: CENTER-RIGHT;
}

这适用于 JavaFX8。请让我知道它是否适合您。

于 2014-10-17T11:35:08.437 回答
0

这是执行相同对齐的代码片段:

    TableColumn sizeCol = new TableColumn("Size");
    sizeCol.setResizable(true);
    sizeCol.setStyle("-fx-alignment: CENTER-RIGHT;");
    sizeCol.setCellValueFactory(new PropertyValueFactory<Parameter, Long>("size"));

它对我有用,但我读了一篇旧帖子,有人说它不适用于编辑。由于我的表是只读的,因此我没有对其进行测试。

于 2021-07-15T18:22:56.663 回答