我知道WindowStateListener
会告诉我一个组件是垂直最大化、水平最大化还是同时最大化。至少,它说它会。除了将窗口捕捉到屏幕的左边缘或右边缘之外,我不知道如何在水平方向或垂直方向上完全最大化窗口。这种行为是否有另一个听众?还是我需要自己制作一些东西来跟踪鼠标相对于屏幕的位置?我制作了一个示例程序来显示我所描述的内容。
SSCCE
import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
SnapFrame frame = new SnapFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(500,500));
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class SnapFrame extends JFrame implements WindowStateListener{
public SnapFrame(){
super();
addWindowStateListener(this);
}
@Override
public void windowStateChanged(WindowEvent arg0) {
//will print a statement for all state change events except snapping to left/right edges of screen
System.out.println("state changed");
}
}
如果我想让事情由这种行为触发,并且没有其他听众对此有事件,那么一个不错的主意是获取我的屏幕尺寸并在鼠标靠近我的屏幕边缘时观察它的位置吗?