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);
}
}
}
最后窗体注册事件即可。。。
经过测试,,在使用时会有一点肉眼可见的大小变化,,,
限制最小尺寸可以用 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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树