JavaFX SetText CSS 选项

JavaFX SetText CSS options

我正在使用 Jfoenix 库,我已经让它显示一年中的第几天和一个月中的第几天(在此处询问第一个提示之后)。它们都在 setText 行内。我想弄清楚是否可以将 CSS 分别添加到它们中,这样我就可以使年度中的某一天看起来更小,在右上角,并且可能是不同的颜色。我用谷歌搜索了很多但没有得到我正在寻找的答案。谢谢。

    endDate.setDayCellFactory(p -> new DateCell() {

        @Override
        public void updateItem(LocalDate item, boolean empty) {
            super.updateItem(item, empty);

            if (item == null) {
                setText("");
            } else {
                setText(Integer.toString(item.getDayOfYear()) + "\r\n" + Integer.toString(item.getDayOfMonth()));
            }
        }

    });

同一 Labeled 中的文本样式不能不同,但可以使用 graphic 属性 来显示日期:

DatePicker datePicker = new DatePicker();
datePicker.setDayCellFactory(p -> new DateCell() {

    private final Text doy = new Text();
    private final Text dom = new Text();

    private final VBox graphic = new VBox(doy, dom);

    {
        setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
        doy.setFont(Font.font(8));
        dom.setFont(Font.font(15));
        VBox.setMargin(dom, new Insets(0, 0, 0, 10));
    }

    @Override
    public void updateItem(LocalDate item, boolean empty) {
        super.updateItem(item, empty);
        if (item == null) {
            setGraphic(null);
        } else {
            setGraphic(graphic);
            doy.setText(Integer.toString(item.getDayOfYear()));
            dom.setText(Integer.toString(item.getDayOfMonth()));
        }
    }

});

顺便说一句:对于 java 内部字符串处理通常不需要 \r。仅当您将字符串写入文件或使用依赖于 OS 的行分隔符的 class 时才需要这样做;只有 \n 可以很好地满足您在此处使用它的目的。如果你需要在不同的 OS 上使用不同的行分隔符,硬编码 \r\n 不是一个好主意;请改用 System.lineSeparator()