问题描述
Windows 10 上的 Java 8。 我有一个可调整大小的 jdialog。 我尝试了以下代码,看看当鼠标光标在 jdialog 边缘改变形状并准备按下和拖动以调整 jdialog 大小时,我是否可以捕获 mousepressed & mouseReleased 事件,
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
@Override
public void eventdispatched(AWTEvent event) {
if (event instanceof MouseEvent) {
MouseEvent me = (MouseEvent)event;
System.out.println("mouse event captured");
}
},AWTEvent.MOUSE_EVENT_MASK);
但是上面的代码在按下/拖动/释放鼠标驻留jdialog的过程中无法捕获任何鼠标事件。不过,如果鼠标指针在 jdialog 的边界内,它可以捕获所有鼠标事件。
如何在使用鼠标调整 jdialog 大小的过程中捕获 mousepressed/mouseDragged/mouseReleased 事件?
解决方法
看起来您想在调整 JFrame/JDialog 大小时执行代码,然后只需 JFrame/JDialog.addComponentListener 方法。当窗口调整大小时,componentResized 被调用。
如果您想区分使用代码更改大小或通过拖动更改大小,只需使用布尔值:
resizingByCode = true;
resize();
resizingByCode = false;
在 componentResized 检查这个布尔值。