Я пытаюсь сделать так, чтобы фрагмент, который я открываю модально, имел полупрозрачный фон.Я могу сделать это, установив непрозрачность сцены, но на самом деле я не могу использовать этот метод, потому что тогда он делает весь текст и кнопки, которые есть в модальном окне, также полупрозрачными.Есть ли способ установить 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
}
}
Как вы можете видеть, фон фрагмента не становится прозрачным, как ожидалось.Я делаю это неправильно?Любая помощь будет оценена!