public class Main
{
  boolean packFrame = false;
  public Main()
 {
  JFrame frame = new JFrame();
  frame.setSize(700,500);
  if (packFrame)
     {
       frame.pack();
     }
  else
     {
       frame.validate(); 
     }
   frame.setVisible(true);
}
请问这里为什么要设置packFrame,起到什么作用呢?

解决方案 »

  1.   

    packFrame这哪儿来的要问你自己哈!
      

  2.   

    楼上的请看清楚。不要看都不看就发表意见。谢谢。
    这是我看的源代码的一部分。
    开始既然设置了 boolean packFrame = false;为什么还要用if来判断,不是每次都是false吗?
    另外frame.pack();frame.validate(); 具体起什么作用呢?
      

  3.   

    为什么在构造器里调用一个外部变量来作判断??静态变量好象还会变化 这样构造函数初始化时 好象只会执行frame.validate(); 还有validate()重新布置子组件 如果不调用他会怎样 就是怎样的时候必须调用
    pack()调整到合适大小 我用的时候怎么把frame调成一个条缝那么大了?
      

  4.   

    光看这段代码好像有问题  ‘开始既然设置了 boolean packFrame = false;为什么还要用if来判断,不是每次都是false吗? ’ 呵呵 我想packFrame是一个标志 标志着在创建窗口对象时是不是要pack此窗口 这个类应当会有两个方法 setPackFrame()和isPackFrame()来设置和获取这个标志 但是好像只有他们都是静态的太可以啦 在构建对象之前调用静态方法先设置这个标志 而这个标志也是静态的pack():调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该 Window。
    validate():
    使用 validate 方法会使容器再次布置其子组件。已经布置容器后,在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。