这是一个适用于常规
Label
的版本。只需将下面的监听器添加到您的标签中,并确保
Label
文本是透明的,并且具有背景。
CSS:
.content-rating, .adult-rating {
-fx-background-color: rgb(213, 222, 255);
-fx-background-radius: 10px;
-fx-text-fill: transparent;
}
Java 代码:
InvalidationListener listener = (obs) -> {
Text text = new Text();
text.setFont(label.getFont());
text.setText(label.getText());
Bounds b = label.getLayoutBounds();
Insets insets = label.getInsets();
Region.layoutInArea(text, b.getMinX(), b.getMinY(), b.getWidth(), b.getHeight(), 0, insets, false, false, label.getAlignment().getHpos(), label.getAlignment().getVpos(), true);
Rectangle r = new Rectangle(-insets.getLeft(), -insets.getTop(), b.getWidth() + insets.getRight(), b.getHeight() + insets.getBottom());
label.setClip(Shape.subtract(r, text));
};
label.layoutBoundsProperty().addListener(listener);
以下是JavaFX应用程序中的示例:
![enter image description here](https://istack.dev59.com/dPttQ.webp)