簡體   English   中英

從 JavaFX 標簽中刪除填充/邊距

[英]Remove padding/margin from JavaFX Label

有沒有辦法刪除 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();
    }
}

一種更動態的方法是使用Text而不是 Label 並將boundsType設置為VISUAL 無論字體大小如何,這都會導致文本的任何一側都沒有任何填充。

Text text = new Text();
text.setBoundsType(TextBoundsType.VISUAL);

您可以通過添加-fx-padding: -10 0 0 0;來實現這一點-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()之后調用該代碼。 在此之前,圖形引擎還沒有准備好提供正確的指標。

對我來說,最簡單的方法是使用setPadding

label.setPadding(new Insets(-2,0,0,0)); //top, right, bottom, left

這樣我就不必處理 css 樣式表。

有關更多詳細信息,請參閱我在此處的帖子子結構樣式

你也可以在stage.show()之后這樣做。

以分隔符為例:

Separator separator = new Separator();
separator.setStyle(""
    + "-fx-border-width: 1px;"
    + "-fx-border-color: black;"
    + "-fx-padding: 0px;"
    + "");

stage.show()

Node line = separator.lookup(".line");
line.setStyle(""
    + "-fx-border-insets: 0px;"
    + "-fx-border-width: 0px;"
    + "");

或者這樣索引0,因為它在索引 0 處只有一個元素,它是一個帶有樣式 calss .line 的區域

separator.getChildrenUnmodifiable().get(0).setStyle(""
    + "-fx-border-insets: 0px;"
    + "-fx-border-width: 0px;"
    + "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM