【问题标题】:JavaFX 8 TableView Text AlignmentJavaFX 8 TableView 文本对齐
【发布时间】:2013-11-24 17:55:00
【问题描述】:

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

ma​​in.fxml(相关片段)

<AggregatorTableView id="aggregators"/>

styles.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; }
        });
    }
}

【问题讨论】:

标签: java javafx javafx-8 java-8


【解决方案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。请让我知道它是否适合您。

【讨论】:

    【解决方案2】:

    这是一个执行相同对齐的sn-p代码:

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-07
      • 2017-07-14
      • 2014-03-25
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2016-11-25
      相关资源
      最近更新 更多