如何在ListView中居中文本?

6
有没有办法在JavaFX的ListView中将元素文本居中对齐?
我并没有找到一种可以实现这个功能的方法。
3个回答

7

您可以使用CSS样式表来设置ListViewListCell的对齐方式。例如,如果将ID lv 分配给 ListView

#lv .list-cell {
    -fx-alignment: center;
}

是否可以仅对特定单元格进行对齐? - arxakoulini
1
@koulini,你需要编写一个选择器来为你想要样式化的ListCell进行样式设置。基于内容或索引选择单元格的唯一可能性是:empty:filled:odd:even伪类。如果要更改未选中/聚焦的特定项目,你需要编写一个自定义的cellFactory,返回更新基于内容的样式类/伪类的单元格。 - fabian

0

尝试加载字体:

Font.loadFont(getClass().getResourceAsStream("/direct/font_nam .ttf"), 20);

-1

需要为ListView设置一个新的工厂。为此,我们将传递一个新的Callback对象到setCellFactory方法中,并重写ListCell单元格的call方法,以定义传入数据的格式规则。但实际上,通过CSS样式更容易实现,前面的CSS答案已经解释过了。

    listViewOnExit.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
        @Override
        public ListCell<String> call(ListView<String> stringListView) {
            ListCell<String> cell = new ListCell<String>(){
                @Override
                protected void updateItem(String item, boolean empty) {
                    super.updateItem(item, empty);
                    setText(item);
                }
            };
            cell.setAlignment(Pos.CENTER);
            return cell;
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接