Как сделать так, чтобы открытие фрагмента было частично прозрачным? - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь сделать так, чтобы фрагмент, который я открываю модально, имел полупрозрачный фон.Я могу сделать это, установив непрозрачность сцены, но на самом деле я не могу использовать этот метод, потому что тогда он делает весь текст и кнопки, которые есть в модальном окне, также полупрозрачными.Есть ли способ установить background сцены прозрачным?Или установить цвет с низким альфа-значением, а затем сделать корень фрагмента прозрачным?Вот тест, который я поднял, чтобы показать проблему.

import javafx.geometry.Pos
import javafx.scene.paint.Color
import javafx.stage.StageStyle
import tornadofx.*

fun main(args: Array<String>) {
    launch<ModalTransparencyTest>(args)
}

class ModalTransparencyTest: App(TestView::class)

class TestView : View() {
    override val root = vbox {
        alignment = Pos.CENTER
        button("open modal window").action {
            val newStage = TestFragment().openModal(StageStyle.UTILITY, escapeClosesWindow = true)
            if (newStage != null) {
                newStage.scene.fill = Color.TRANSPARENT
                //don't want to set stage's opacity as that will set
                //all of the stage's children to be less opqaue as well
                //just want to set the stage's background to be semi-transparent
            }
        }
    }

    override fun onDock() {
        super.onDock()
        primaryStage.width = 800.0
        primaryStage.height = 600.0
    }
}

class TestFragment: Fragment() {
    override val root = vbox {
        text("I am a test fragment")

        style {
            backgroundColor += c(.2, .2, .2, .8)
        }

        prefWidth = 300.0
        prefHeight = 200.0
    }
}

Как вы можете видеть, фон фрагмента не становится прозрачным, как ожидалось.Я делаю это неправильно?Любая помощь будет оценена!

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