您的位置:首页 > 编程语言 > Java开发

JFrame设置最大尺寸

2016-07-14 21:48 295 查看
很多时候会有需求限制窗口大小。。。不是将窗口固定在某个尺寸,,,而是一个范围。。。

限制最小尺寸可以用 JFrame的 setMinimumSize() 方法。。。但是设置最大尺寸去调用 setMaximumSize() 却不起作用。。。原因未知

因此我的思路是   监听窗口的大小改变事件,,,当达到最大尺寸的时候用 Robot 类操纵鼠标

首先是监听大小改变事件

this.addComponentListener()

因为操作会涉及教多的变量,不适合用匿名类。。
因此新建一个SizeLisenter  类,,该类继承 ComponentAdapter,,,并重写 public void componentResized(ComponentEvent e); 方法

首先要确定成员变量

private JFrame jFrame;//操作的窗口,将这个换成其他窗体类也行
private int width;//最大宽度
private int height;//最大高度

并用一个唯一的构造方法赋值
public SizeLisenter(JFrame jFrame, int width, int height) {
super();
this.jFrame = jFrame;
this.width = width;
this.height = height;
}

最后是响应方法
/**
* 响应窗口大小改变事件
*/
public void componentResized(ComponentEvent e) {
Robot r = null;//这是用来控制鼠标
try {
r = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
if (jFrame.getWidth() > width) {//不能相等,否则一旦达到最大尺寸,就无法再调整大小
jFrame.setSize(width, jFrame.getHeight());
if (r!=null) {
r.mouseRelease(InputEvent.BUTTON1_MASK);//松开鼠标左键
}
}
if (jFrame.getHeight() > height) {
jFrame.setSize(jFrame.getWidth(), height);
if (r!=null) {
r.mouseRelease(InputEvent.BUTTON1_MASK);
}
}

}


最后窗体注册事件即可。。。

经过测试,,在使用时会有一点肉眼可见的大小变化,,,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java JFrame 限制大小