kotlin - Java FX 对话框“出现”,没有大小
问题描述
我在 Fedora 33 (GNU/Linux) 和 Xorg GUI 服务器 (v 1.20.11) 上使用 JFX 11,因此创建了一个对话框 (kotlin):
fun YNdialog (txt : String) : Boolean {
val dlog = Dialog<ButtonType>()
dlog.dialogPane.apply {
contentText = txt
buttonTypes.apply {
add(ButtonType.OK)
add(ButtonType.CANCEL)
}
minWidth = 200.0
minHeight = 100.0
}
dlog.initOwner(theStage.scene.window)
val r = dlog.showAndWait()
return r.isPresent && r.get() == ButtonType.OK
}
这是从EventHandler<ActionEvent>
与 a 关联的 a调用的Button
:
if (YNdialog("hello world")) ...
似乎确实创建了一个窗口。如果我删除initOwner()
呼叫,它的图标会出现在桌面任务栏 (KDE) 中,允许我执行移动它之类的操作,但“最大化”和“调整大小”显示为灰色,并且鼠标光标似乎没有拖动任何内容,即,它没有宽度或高度。
有了initOwner()
它,它做了很多相同的事情,除了它没有任务栏图标。此外,在它应该位于的位置(位于主窗口的中心)有一个可见的垂直线一两个像素厚。更有趣的是在主窗口的标题栏中出现了第二个关闭按钮:
这不是 javafx 接口的一部分,但我以前从未见过窗口管理器(?)这样做。
偶尔(可能是五分之一或十次)对话框确实会出现,奇怪的是,那里的关闭按钮会偏移第二个空格:
当发生这种情况并且我可以关闭对话窗口时,主窗口上的第二个关闭按钮就会消失。
使用Alert
将该功能等替换为:
Alert(Alert.AlertType.CONFIRMATION, "hello world").showAndWait()
.filter { res -> res == ButtonType.OK }
.ifPresent { _ -> log.msg("ok!") }
结果与带有 的 YNdialog 相同initOwner()
。
我在这里错过了什么吗?我从文档中直接得到了所有这些。我已经完成了自定义弹出窗口(通过 实例化FXMLLoader
)并且对此没有任何问题。这种经历是否意味着对话层次结构在这种情况下存在故障,我应该自己动手?
解决方案
推荐阅读
- cookies - 使用 cookie 进行本地主机开发
- mongodb - 如何从同一数据库的两个集合中查找元素并在猫鼬中删除它
- oracle - Oracle 12.2:优化器在末尾添加 FOR UPDATE OF ... 块时更改 SELECT 查询的解释计划
- pom.xml - 从多模块项目中的主 pom.xml 继承依赖项
- reactjs - .Map 后反应数据
- firebase - 在 React Native 中检查用户是否在线
- python - 通过 python 将 txt 转换为 CSV:为什么会出现额外的空行?
- r - r中的事件时间数据帧
- matplotlib - 使用.imshow时如何创建仅没有填充的图像轮廓?
- excel - VLookups 返回 #N/As 除非在单元格上按 Enter