请问如何控制窗口JFrame的最小宽度和高度,即定义JFrame的宽和高的最小尺寸为200*200时,当JFrame被拖拽到变小时仅停留在200*200的尺寸,不得小于该尺寸!
还是我的老规矩,谁答出来谁那打头,顶的有纪念奖!
答出立即结帖,谢谢!

解决方案 »

  1.   

    setMinimumSize(new Dimension(200,200));
      

  2.   


    import java.awt.Dimension;import javax.swing.JFrame;public class LimitSize extends JFrame
    {
        private static final long serialVersionUID = -4936560385802666005L;    public static void main(String args[])
        {
            try
            {
                LimitSize frame = new LimitSize();
                frame.setVisible(true);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }    public LimitSize()
        {
            super();
            setBounds(100, 100, 500, 375);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setMinimumSize(new Dimension(200, 200));
        }
    }
      

  3.   

    Java code 答案我已经试过了,用鼠标拖动窗体时,还是可以将窗台拖到最小,并没有停留在指定的宽度和高度上
    谢谢各位多多出主意哦!谢谢!
      

  4.   

     添加组件的事件监听器,处理componentResized事件,判断resize后的尺寸与设定的最小尺寸的大小,重新设置窗体大小setSize(width,height)组件.addComponentListener( new ComponentAdapter( ){            public void componentResized(ComponentEvent e) {
    // to do.
    }
      

  5.   


    import java.awt.*;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;import javax.swing.JFrame;public class LimitSize extends JFrame
    {
        private static final long serialVersionUID = -4936560385802666005L;    public static void main(String args[])
        {
            try
            {
                LimitSize frame = new LimitSize();
                frame.setVisible(true);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }    public LimitSize()
        {
            super();
            setBounds(100, 100, 500, 375);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLayout(new FlowLayout());
            setMinimumSize(new Dimension(200, 200));
            
            addComponentListener(new   ComponentAdapter(){ 
             public   void   componentResized(ComponentEvent   e)   {
            
             JFrame frame = (JFrame) e.getComponent();
             Dimension newDimension = frame.getSize();
             Dimension mindimension = getMinimumSize();
                            //在resize时判断是否小于最小值,如果小于的话就修改
            
             if (newDimension.width<mindimension.width)
             newDimension.width = mindimension.width;         if (newDimension.height<mindimension.height)
             newDimension.height = mindimension.height;
            
             frame.setSize(newDimension);
            
             }        });    }
     
    }
      

  6.   

    我觉得,如果要控制窗口缩小到一定程度就不能再变小应该不用去定义事件监听器,这样太麻烦。我觉得只要在窗口的标题栏中add一个可以当做垫衬撑住窗口的组建,就好像一个纸箱中没有放入任何东西的时候可以将他缩到最小,但如果放入一些东西后就不可能将他缩到最小了,这是一个道理。先试一试,等我写出例子再贴出来!
      

  7.   

    楼主,5楼的代码不是有效的么?
    我JDK 1.5下测试OK。