Remove padding/margin from JavaFX Label

前端 未结 4 1775
长情又很酷
长情又很酷 2020-12-11 03:44

Is there a way to remove the default space (padding/margin) that JavaFX label adds? I want to get rid of the space displayed between the black lines on the image below:

相关标签:
4条回答
  • 2020-12-11 04:11

    For me it was easiest to just use setPadding.

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

    This way I did not have to deal with the css-style sheet.

    0 讨论(0)
  • 2020-12-11 04:15

    You can achieve that by adding -fx-padding: -10 0 0 0; to the list of your styles.

    For more flexible solution you can use FontMetrics information:

    FontMetrics metrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(label.getFont());
    label.setPadding(new Insets(-metrics.getDescent(), 0, 0, 0));
    

    NB: You need to call that code after scene.show(). Before that graphics engine is not ready to provide correct metrics.

    0 讨论(0)
  • 2020-12-11 04:23

    One of the more dynamic ways to do this is to use a Text instead of a Label and set the boundsType as VISUAL. This results in a Text without any padding on the any of the sides of the Text, irrespective of the font size.

    Text text = new Text();
    text.setBoundsType(TextBoundsType.VISUAL);
    
    0 讨论(0)
  • 2020-12-11 04:31

    For more details see my post here Substructure styling

    You could also do it like this after the stage.show().

    With the example of an separator:

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

    Do

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

    or this way index 0 because it has only one element at index 0 which is an Region with style calss .line

    separator.getChildrenUnmodifiable().get(0).setStyle(""
        + "-fx-border-insets: 0px;"
        + "-fx-border-width: 0px;"
        + "");
    
    0 讨论(0)
提交回复
热议问题