当我将对话框移动到不同的屏幕时,我需要缩放它们。由于缩放所有组件的开销很大,所以我只想在对话框移动到新位置时执行一次。
因此,我使用了一个计时器,它会在每个传入的componentMoved事件后重新启动,以了解对话框何时停止移动。这很有效,只要在停止对话框时松开鼠标即可。
如果对话框停止移动,而鼠标仍处于按下状态,则缩放起作用。但是,一旦我释放鼠标,我的L&F引擎就会将对话框大小调整为以前的大小,这非常不方便。
我尝试了pack(),手动设置大小(我知道,这是很糟糕的做法),我在缩放之前尝试了setVisible(false),之后尝试了setVisible(true),但只要按下鼠标,我的L&F引擎就会将对话框大小调整为以前的大小。
遗憾的是,所有与titleBar相关的MouseEvents都被引擎吞噬了,所以我不能简单地使用mouseReleased事件来触发缩放。
这就是为什么我需要找出鼠标是否在不使用事件的情况下仍然被按下。有什么办法吗?JNI以某种方式?
我不能展示一个例子,因为没有L&F引擎,它工作得很好。不使用它也不是一种选择。
发布于 2017-09-04 14:34:56
我认为,你应该使用ComponentListener。当窗口大小更改时,布局管理器必须触发重新布局,并且必须更改组件大小。
此外,出于调试目的,您可以使用AWTEventListener来获取在您的UI中抛出的所有事件。
Toolkit.getDefaultToolkit().addAWTEventListener(...);手动设置大小(我知道,这是一种糟糕的做法)
这不是一种糟糕的做法。尤其是当您想要恢复以前的窗口大小时。pack()只是一种首选方式。
https://stackoverflow.com/questions/46031141
复制相似问题