JavaFX TableView 文本对齐方式 [英] JavaFX TableView text alignment

查看:47
本文介绍了JavaFX TableView 文本对齐方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如您在图片中看到的,每个列的文本对齐设置为左对齐.有什么办法可以改变这种情况吗?到目前为止,我已经在我的 CSS 文件中尝试过:

As you can see on the picture the text alignment for each colum is set to left alignment. Is there any way to change this? So far I've tried within my CSS file:

#Cols{
    text-align: right;
}

我也试过:

#Cols{
    -fx-text-alignment: right;
}

有谁知道我如何将对齐更改为正确的?

Does anyone know how I can change the alignment to right?

推荐答案

所有表格列的对齐:

从JavaFX-8开始,你可以使用新定义的CSS选择器table-column

#my-table .table-column {
  -fx-alignment: CENTER-RIGHT;
}

对于 JavaFX-2,为此,请定义一个 CSS 选择器:

For JavaFX-2, To achieve this define a CSS selector:

#my-table .table-cell {
    -fx-alignment: CENTER-RIGHT;
     /* The rest is from caspian.css */

    -fx-skin: "com.sun.javafx.scene.control.skin.TableCellSkin";
    -fx-padding: 0.166667em; /* 2px, plus border adds 1px */

    -fx-background-color: transparent;
    -fx-border-color: transparent -fx-table-cell-border-color transparent transparent;
    -fx-border-width: 0.083333em; /* 1 */
    -fx-cell-size: 2.0em; /* 24 */
    -fx-text-fill: -fx-text-inner-color;
}

并设置tableview的id.

tableView.setId("my-table");


从 JavaFX-8 开始,您可以将样式直接应用于 TableColumn,

Starting from JavaFX-8, you can apply the styling directly to TableColumn,

firstTextCol.setStyle( "-fx-alignment: CENTER-RIGHT;");

或使用 css,

firstTextCol.getStyleClass().add( "custom-align");

哪里

.custom-align { 
  -fx-alignment: center-right; 
} 

对于 JavaFX-2,
要将不同的对齐方式应用于不同的列,您需要为该列设置单元工厂.例如,假设您的表格中的第一列应向左对齐,而其他列使用表格的默认对齐方式(在您的情况下为 CENTER-RIGHT).

For JavaFX-2,
To apply different alignments to different columns you need to set cell factory for that column. For instance assume that the 1st column in your table should be aligned to the left while other columns use the table's default alignment (CENTER-RIGHT in your case).

firstTextCol.setCellFactory(new Callback<TableColumn, TableCell>() {
            public TableCell call(TableColumn p) {
                TableCell cell = new TableCell<Person, String>() {
                    @Override
                    public void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);
                        setText(empty ? null : getString());
                        setGraphic(null);
                    }

                    private String getString() {
                        return getItem() == null ? "" : getItem().toString();
                    }
                };

                cell.setStyle("-fx-alignment: CENTER-LEFT;");
                return cell;
            }
        });

这篇关于JavaFX TableView 文本对齐方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆