如何去除分隔器内的空间?

时间:2019-05-07 03:53:27

标签: java css javafx separator

我在Horizontal Separator中创建了一个VBox

以下是代码:

Separator s = new Separator(Orientation.HORIZONTAL);
s.setStyle(""
    + "-fx-border-width: 1px;"
    + "-fx-border-color: black;"
    + "-fx-padding: 0px;"
    + "");
getChildren().add(s);

我想删除Separator内的空格。因此,我设置了CSS属性-fx-padding: 0px;,但似乎不起作用。

我该怎么办??!


这是图片 Separator

1 个答案:

答案 0 :(得分:2)

分隔符由两个元素组成。

具有CSS类 separator Separator 根节点 以及具有css类 line

的子元素 Region

如果要删除黑框中间的行,则必须修改region( line )子级并设置其边框 insets width 0px

例如:

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

stage.show()

在stage.show()之后,您将可以通过查找 getChildrenUnmodifiable()

来访问其子级
Node line = separator.lookup(".line");
line.setStyle(""
    + "-fx-border-insets: 0px;"
    + "-fx-border-width: 0px;"
    + "");

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

第三次选择With metrics

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

With Bounds的第四个选项,不适用于所有节点,并且在这种情况下不起作用。

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

最后,您可以添加一个 CSS 文件,该文件会更改 .line 类的样式

App.css:

.line {
    -fx-border-width: 0px;
    -fx-border-insets: 0px;
}

.separator {
    -fx-padding: 0px;
    -fx-border-insets: 0px;
    -fx-border-width: 1px;
    -fx-border-color: black;
}

然后您只需要将此CSS应用于场景即可。

scene.getStylesheets().add("App.css");

如果您还不了解它,也许您应该结帐Scenic View,如果要检查JavaFx应用程序,这是一个很好的工具。