获取没有事件的鼠标左键状态

时间:2017-09-04 06:05:01

标签: java swing

我需要在将对话框移动到其他屏幕时缩放对话框。由于扩展所有组件非常昂贵,所以当对话框移动到新位置时,我只想做一次。

所以我使用了一个计时器,它会在每次传入的componentMoved事件中重新启动,以便在对话框停止移动时知道。只要在停止对话框时释放鼠标,这就很有效。

如果对话框停止移动并且仍然按下鼠标,则缩放工作。但是,当我释放鼠标时,我的L& F引擎将对话框的大小调整为之前的大小,这非常不方便。

我尝试pack(),手动设置大小(我知道,不好练习),我在缩放前尝试了setVisible(false),之后尝试了setVisible(true),但只要按下鼠标,我的L& F引擎将对话框调整为其先前的大小。

可悲的是,所有关于titleBar的MouseEvent都被引擎吞噬,所以我不能简单地使用mouseReleased事件来触发扩展。

这就是为什么我需要找出,如果仍然按下鼠标而不必使用事件。有什么办法吗? JNI莫名其妙?

我无法展示一个例子,因为没有L& F引擎,它可以正常工作。不使用它也不是一种选择。

1 个答案:

答案 0 :(得分:1)

我认为你应该使用ComponentListener。更改窗口大小时,布局管理器必须触发重新布局,并且必须更改组件大小。

另外,出于调试目的,您可以使用AWTEventListener来获取UI中抛出的所有事件。

Toolkit.getDefaultToolkit().addAWTEventListener(...);
  
    

手动设置大小(我知道,不好的做法)

  

这不是一个坏习惯。特别是当您想恢复以前的窗口大小时。 pack()是首选方式。