Есть ли способ дать классу JavaFX новый класс стилей, а затем нормально обращаться ко всем остальным объектам внутри этого класса? - PullRequest
0 голосов
/ 11 февраля 2020

У меня сейчас есть проект JavaFX, над которым я работаю над улучшением CSS. Я создал несколько классов, которые содержат другие классы внутри него (например, Button, TextField, ScrollPane и т. Д. c.)

Для простоты, давайте назовем этот один класс Bucket.

Внутри моего класса Bucket у меня также есть Button и TextField.

Я добавил новый styleClass в корзину, выполнив:

getScene().getStyleClass().add("bucket");

После этого, Я перехожу к своему CSS файлу и хочу изменить цвет текста кнопки внутри моего класса Bucket.

Нужно ли мне также присвоить кнопке новый StyleClass () или я могу получить доступ к нему через:

.bucket > .button { -textColor: white; }

Если я смогу сделать последнее, как я могу заставить его работать?

Любая помощь приветствуется!

1 Ответ

2 голосов
/ 11 февраля 2020

Предположим, Bucket выглядит примерно так:

public class Bucket extends Region { // or extends Pane, Control, some other Parent

  public Bucket() {
    getStyleClass().add("bucket");

    Button button = new Button("Some text");
    getChildren().add(button);
  }
}

Тогда да, вы должны использовать:

.bucket > .button {
  -fx-text-fill: <your-color>;
}

Если кнопка не является прямым потомком Bucket, тогда получите избавиться от >. Не уверен, что ответить: « Если я могу сделать последнее, как я могу заставить его работать? ». Вы можете сделать последнее, и - это способ заставить его работать (хотя в вашем примере не используется правильное свойство CSS).

Обратите внимание, что getStyleClass().add("some-style-class") - как каждому узлу назначается класс стиля. Таким образом, вы точно так же будете работать с API.

Для получения дополнительной информации см. Справочное руководство JavaFX CSS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...