2013-03-22 93 views
0

我在我的項目中有以下代碼段。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

下面是去 -

  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