Как я могу удалить пространство внутри разделителя? - PullRequest
0 голосов
/ 07 мая 2019

Я создал 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;, но оно не работает.

Как я могу это сделать ?? !!


Вот изображение Сепаратор

1 Ответ

2 голосов
/ 07 мая 2019

Разделитель состоит из двух элементов.

Корневой узел с классом css разделитель и дочерний элемент Region с cssclass line

Если вы хотите удалить линию в середине черного ящика, вам нужно изменить дочерний регион ( line ) и установить его границу вставки и ширина до 0px

например:

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

stage.show()

А чем после stage.show () вы будетеиметь доступ к своему ребенку через lookup или 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;"
    + "");

и третий вариант С метриками

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

и четвертой опцией С границами , которая не применима для всех узлов и не работает в этом случае.

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

И в качестве последнего варианта вы можете добавить CSS файл, который изменяет стиль .line class

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.

...