有没有办法删除JavaFX标签添加的默认空间(填充/边距)?我想摆脱下图中黑线之间显示的空间:
源代码:
public class LabelTest extends Application { @Override public void start(final Stage primaryStage) { final Group root = new Group(); final Scene scene = new Scene(root, 300, 130, Color.WHITE); final GridPane gridpane = new GridPane(); gridpane.setPadding(new Insets(5)); gridpane.setHgap(10); gridpane.setVgap(10); final Label label = new Label("Label"); label.setStyle("-fx-font-size:44px;-fx-font-weight: bold;-fx-text-fill:#5E34B1;-fx-background-color:#ffc300;"); GridPane.setHalignment(label, HPos.CENTER); gridpane.add(label, 0, 0); root.getChildren().add(gridpane); primaryStage.setScene(scene); primaryStage.show(); } }
ItachiUchiha.. 6
其中一种更动态的方法是使用a Text
而不是Label并设置boundsType
as VISUAL
.无论字体大小如何,这都会导致Text在文本的任何一侧都没有任何填充.
Text text = new Text(); text.setBoundsType(TextBoundsType.VISUAL);
Sergey Grine.. 5
您可以通过添加-fx-padding: -10 0 0 0;
样式列表来实现.
对于更灵活的解决方案,您可以使用FontMetrics
的信息:
FontMetrics metrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(label.getFont()); label.setPadding(new Insets(-metrics.getDescent(), 0, 0, 0));
注意:你需要在之后调用该代码scene.show()
.之前图形引擎尚未准备好提供正确的指标.
其中一种更动态的方法是使用a Text
而不是Label并设置boundsType
as VISUAL
.无论字体大小如何,这都会导致Text在文本的任何一侧都没有任何填充.
Text text = new Text(); text.setBoundsType(TextBoundsType.VISUAL);
您可以通过添加-fx-padding: -10 0 0 0;
样式列表来实现.
对于更灵活的解决方案,您可以使用FontMetrics
的信息:
FontMetrics metrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(label.getFont()); label.setPadding(new Insets(-metrics.getDescent(), 0, 0, 0));
注意:你需要在之后调用该代码scene.show()
.之前图形引擎尚未准备好提供正确的指标.