我有一个未装饰的舞台,里面有一个定制的标题栏。这个标题栏包含“图标按钮”,它们只是保存图像视图的堆叠窗格。
我还使用此代码通过标题栏(静态编程语言代码)使舞台可拖动:
fun makeDraggable(stage: Stage, byNode: Node) {
val dragDelta = Delta()
byNode.setOnMousePressed { e ->
if (stage.isFullScreen || stage.isMaximized) {
return@setOnMousePressed
}
dragDelta.x = stage.x - e.screenX
dragDelta.y = stage.y - e.screenY
}
byNode.setOnMouseDragged { e ->
if (stage.isFullScreen || stage.isMaximized) {
return@setOnMouseDragged
}
stage.x = e.screenX + dragDelta.x
stage.y = e.screenY + dragDelta.y
}
}
现在的问题是,即使鼠标在其中一个“图标按钮”上,舞台也是可以拖动的。对于普通的JavaFX按钮,这似乎不是问题。我不明白为什么会这样,以及如何解决它。
检查PickResult似乎工作得很好(感谢Fabian):
fun makeDraggable(stage: Stage, byNode: Node) {
val dragDelta = Delta()
var validTarget = true
byNode.setOnMousePressed { e ->
if (stage.isFullScreen || stage.isMaximized) {
return@setOnMousePressed
}
val pickedNode = e.pickResult.intersectedNode
if (pickedNode is IconButton) {
validTarget = false
return@setOnMousePressed
}
if (pickedNode.parent is IconButton) {
validTarget = false
return@setOnMousePressed
}
dragDelta.x = stage.x - e.screenX
dragDelta.y = stage.y - e.screenY
}
byNode.setOnMouseReleased { e ->
if (stage.isFullScreen || stage.isMaximized) {
return@setOnMouseReleased
}
validTarget = true
}
byNode.setOnMouseDragged { e ->
if (stage.isFullScreen || stage.isMaximized) {
return@setOnMouseDragged
}
if (!validTarget) {
return@setOnMouseDragged
}
stage.x = e.screenX + dragDelta.x
stage.y = e.screenY + dragDelta.y
}
}
问题内容: 我有一个未经修饰的JavaFX Stage,还有我自己的最小化,最大化和关闭按钮。但不幸的是,与经过修饰的行为相比,在Windows 7中单击任务栏图标不会自动最小化该阶段。 通过单击任务栏图标,是否可以通过纯Java代码最小化未修饰的阶段?如果不是,我该如何使用JNA? 编辑: 好的,我一直在尝试使用JNA解决此问题,但是几乎没有C / C ++ / JNA完成,因此设置起来有些麻烦
我有一扇没有装饰的窗户: 我想知道我怎样才能把它做成一扇可拖动的未装饰窗户?我想在用户用鼠标右键选择窗口时更改其位置,然后在按住鼠标键的同时移动鼠标。 附言:我测试了这个解决方案,但它不起作用:
我有一个未装饰的JavaFX舞台,我自己的最小化,最大化 有没有办法通过单击任务栏图标来最小化纯Java代码未修饰的阶段?如果不是的话,我该怎么做,比如说,JNA? 编辑:好的,我一直在尝试用JNA解决这个问题,但由于几乎没有C/C/JNA,我在设置这个方面有点麻烦。如果有人帮我把这些东西拼凑起来,我将不胜感激。。 到目前为止,这是我的代码: 编辑2:我最终在这一点上做得更进一步,但当我重新设置W
这是我使用JavaFX的第二天,如果这似乎是一个太常见的知识问题的话。提前谢谢大家。 ..
我是JavaFX技术的新手,目前我正在开发JavaFX应用程序,其中有一个未装饰的阶段,我可以使用下面的代码在屏幕上移动它,但我无法从右下角调整此窗口的大小,有人能给我建议解决方案吗。
问题内容: 我试图发出Windows PC Toast通知。现在,我混合使用了Swing和JavaFX,因为我没有找到使用FX制作未修饰窗口的方法。我更喜欢只使用JavaFX。 那么,如何制作未装饰的窗户? 编辑: 我发现您可以直接使用创建舞台。 现在我所需要知道的是如何初始化工具箱,以便可以在中调用我的方法。(其中) 我通常会打电话给我,但是这使我无法创建和初始化。 那么,如何做这些事情以允许我