Стили CSS не применяются к элементам, добавленным в дерево компонентов JavaFX - PullRequest
1 голос
/ 04 марта 2010

Я применил стиль CSS к компонентам JavaFX, и похоже, что все работает нормально, за исключением одной ситуации: когда я на лету добавляю компоненты JavaFX в дерево компонентов, их стили CSS не применяются.

ДляПример следующего кода:

package test;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.input.MouseEvent;
import javafx.util.Math;
import javafx.scene.paint.Color;

function getRect(): Rectangle {
    return Rectangle {
        x: 230 * Math.random()
        y: 60 * Math.random()
        width: 20, height: 20
        styleClass: "abc"
    }
}

def stage: Stage = Stage {
    scene: Scene {
        width: 250, height: 80
        stylesheets: "{__DIR__}main.css"
        content: [
            Rectangle {
                x: 0, y: 0, width: 250, height: 80
                fill: Color.WHITE
                onMouseClicked: function (evt: MouseEvent): Void {
                    insert getRect() into stage.scene.content;
                }
            }
            getRect()
        ]
    }
}

со следующей таблицей стилей:

.abc {
    fill: red;
}

в файле main.css (оба в пакете test) отображают красный квадрат на белом фоне, но после нажатия кнопкиосновной прямоугольник черные (не красные) квадраты добавляются в сцену.

Я заметил, что:

  1. Компоненты, добавленные динамически, выглядят так, как будто информация о стиле не применялась.
  2. Если вы установите их стиль в коде JavaFX, то все будет работать нормально.
  3. После изменения свойства stylesheets (чтобы оно указывало на другую допустимую таблицу стилей) уже добавленные объекты правильно отображались.

Кто-нибудь знает решение этой проблемы?Конечно, я мог бы поместить все свойства в код JavaFX или предоставить другую таблицу стилей (для всех существующих стилей), которая будет содержать те же данные и изменять таблицу стилей сразу после добавления любого компонента, но я хотел бы найти какое-то элегантное решение.

Заранее спасибо.

1 Ответ

1 голос
/ 23 марта 2010

Это ошибка в 1.2. Это исправлено в следующем выпуске.

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