如题,有JFrame或JDialog窗口,要求窗体大小的最大值为400*300,当用鼠标改变窗口时,窗口到400*300后就不能再拖小了。
就像Windows系统自带的画图程序一样,程序窗口拖到一定大小以后就不能再变小了。
就像Windows系统自带的画图程序一样,程序窗口拖到一定大小以后就不能再变小了。
解决方案 »
- 由一个关于恋爱测试的小程序引发的问题
- 初学者的困惑!
- 今天面试的题目,死了一大片人(java程序员级别)
- 100分请教ftpclient类文件上传问题~~~
- 怎样获取某一点的颜色
- 关于Timer
- 在使用JDBC连接SQL Server 2000时发现无法使用getObject方法检索real类型的数据,这是为什么,请教各位大虾!
- 请问怎样将.gif图片转换成.png
- intern()的问题?
- JB8连接09i的问题...提示:Io 异常: The Network Adapter could not establish the connection
- 随机获得数组String s[] = {"gequ1","gequ2","gequ3","gequ4"};中的字符串,要不重复的,分别赋值给单选按钮的4个选项
- 【Java小新手 求问】一个监听器的问题
我以JFrame为例子写下:import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;import javax.swing.JFrame;public class JFrameResizeTest {
public static void main(String args[]){
MyFrame jf = new MyFrame();
jf.setVisible(true);
jf.setSize(500,600);
}
}class MyFrame extends JFrame implements ComponentListener{
public MyFrame(){
this.addComponentListener(this);//添加ComponentListener
}
public void componentHidden(ComponentEvent e) {
}
public void componentMoved(ComponentEvent e) {
}
public void componentResized(ComponentEvent e) {
System.out.println(e);
int width = e.getComponent().getWidth();
int height = e.getComponent().getHeight(); if (width < 300) {
width = 300;
}
if (height < 300) {
height = 300;//如果这里用setResizable(false);的话,有一个问题,就是画面打开,
//我就一直拖动窗口到很小,则不会窗口会停止在那个状态,而且不会再托大了。
}
setSize(width, height);
}
public void componentShown(ComponentEvent e) {
}
}
这样可以实现了,JDialog一样做就可以了。
import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;import javax.swing.JFrame;public class JFrameResizeTest2 extends JFrame { /**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
JFrameResizeTest2 frame = new JFrameResizeTest2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public JFrameResizeTest2() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setMinimumSize(new Dimension(400, 300)); // 设置最小值,这个效果比较好,比事件处理的效果好。
this.setMaximumSize(new Dimension(800, 600)); // 不知道为什么设置最大值没效果,所以只好使用下面的事件处理。
this.addComponentListener(new ComponentAdapter() {
public void componentResized(final ComponentEvent e) {
int width = e.getComponent().getWidth();
int height = e.getComponent().getHeight();
if (width > 800) {
width = 800;
}
if (height > 600) {
height = 600;
}
setSize(width, height);
}
});
}
}
所以xiaoduan5267 的方法应该是不行的了,bzwn的代码我也看了的,也不行
实际上我只是需要Windows系统下画图程序的窗口拖动相似效果阿,以前在VC里面都很好解决的 另外,这setMinimumSize 、setMaximumSize方法貌似没什么用,设置与不设置都没效果。
还有就是普通的增加侦听器的方法我基本上都试过,貌似都不行。
我甚至做过覆盖paint方法,但是效果也不好(只能在鼠标松开的时候将大小设定到400*300以上)
我想应该从processWindowEvent方法入手,但是试过两次都没效果
灰度郁闷阿....