将对话框移动到不同的屏幕时,我需要缩放对话框。由于缩放所有组件的成本相当高,因此我只想在对话框移动到新位置时执行一次。
所以我使用了一个计时器,它会随着每个传入的 componentMoved 事件而重新启动,以了解对话框何时停止移动。只要在停止对话框时释放鼠标,这种方法就很有效。
如果对话框停止移动并且仍按下鼠标,则缩放有效。但是,当我释放鼠标时,我的 L&F 引擎会将对话框大小调整为之前的大小,这非常不方便。
我尝试了 pack()
,手动设置大小(我知道,不好的做法),我在缩放之前尝试了 setVisible(false)
和 setVisible(true) )
之后,但只要按下鼠标,我的 L&F 引擎就会将对话框的大小调整为之前的大小。
遗憾的是,所有与 titleBar 相关的 MouseEvent 都被引擎吞没了,所以我不能简单地使用 mouseReleased 事件来触发缩放。
这就是为什么我需要找出鼠标是否仍然被按下而不必使用事件。有什么办法吗? JNI 不知何故?
我无法展示示例,因为没有 L&F 引擎,它可以正常工作。不使用它也不是一个选择。
最佳答案
我认为,你应该使用ComponentListener
。当窗口大小更改时,布局管理器必须触发重新布局,并且组件大小必须更改。
此外,出于调试目的,您可以使用 AWTEventListener 来获取 UI 中引发的所有事件。
Toolkit.getDefaultToolkit().addAWTEventListener(...);
block 引用>setting the size manually (I know, bad practice)
这不是一个坏习惯。特别是当您想恢复窗口以前的大小时。
pack()
只是首选方式。
关于java - 在没有事件的情况下获取鼠标左键状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46031141/