我有以下自定义应用程序类实现。但是,我不明白为什么 isVisible
不会改变。我试图将字段类型更改为 SimpleBooleanProperty
. 然而,这并没有帮助。另外,我应该稍后访问ui,所以我想保存对它们的引用,但是,该值也没有设置。我尝试在start()方法中初始化ui组件,但是,在初始化之后,如果看到我的字段,它将为null。
import javafx.stage.Stage
import java.util.concurrent.atomic.AtomicBoolean
class TestApplication : Application() {
@Volatile
private var isVisible = AtomicBoolean(false)
override fun start(stage: Stage) {
stage.show()
println("Stage shown ${Thread.currentThread().name}")
isVisible.set(true)
}
fun showUI() {
Thread { launch(TestApplication::class.java) }.start()
println("Waiting until getting visible")
while (isVisible.get().not());
println("isVisible=${isVisible}")
}
}
1条答案
按热度按时间kxkpmulp1#
问题是创建testapplication类的示例两次。
Application.launch()
创建新示例,但不获取现有示例。解决方案可以是在testapplication类上使用singleton模式。