java JFrame调整大小

问题描述:

我在我的项目中有以下代码段。java JFrame调整大小

someJFrame.addComponentListener(new ComponentAdapter(){ 
    public void componentResized(ComponentEvent e) { 
    pane.resize(new Dimension(getSize().width/5, getSize().height/3)); 
    pane.revalidate(); 
    pane.repaint(); 
    } 
}); 

这似乎在开始时调用的componentResized()方法,权当是的JFrame在第一次初始化,即使用户没有调整JFrame-我需要防止这种情况发生。我只想在发生实际大小调整时调用componetResized(),而不是在JFrame初始化时调用。

+2

将侦听器添加到框架可见之后。 – camickr 2013-03-22 04:36:12

下面是去 -

  1. 定义一个布尔标志,指示是否显示组件,默认为false
  2. 覆盖的componentShown(),并设置该标志为true的方式,这被称为当窗体可见
  3. 在的componentResized()检查的componentShown标志设置,才做一些

事情是这个 -

private boolean componentShown = false; // instance variable 

    someJFrame.addComponentListener(new ComponentAdapter() { 
     public void componentResized(ComponentEvent e) { 
      if(componentShown) { 
       System.out.println("Component RESIZED"); 
      } 
     } 

     public void componentShown(ComponentEvent e) { 
      componentShown = true; 
     } 
    }); 
+0

谢谢,工作很好。所以,我的猜测是componentResized在componentShown之前调用。 – user1917209 2013-03-22 11:06:38