2011-03-30 83 views
1

我想在顯示WorldPanel時獲取(Graphics g)。感謝stackoverflow我看到了答案,我應該在哪裏使用getGraphics方法(ComponentListener.componentShown),但不知怎的,我的偵聽器無法捕獲componentShown。Swing ComponentListener.componentShown未被觸發

我錯了什麼?在代碼片段的底部,不能顯示「你好」。

public class MainPanel extends javax.swing.JPanel implements ComponentListener { 
    private CWorldPanel WorldPanel; // extends JPanel 

    private void initGUI() { 
     try { 
      ... 
      this.setLayout(thisLayout); 
      { 
       WorldPanel = new CWorldPanel();    
       WorldPanel.addComponentListener(this); 
... 
    @Override 
    public void componentShown(ComponentEvent e) { 
     System.out.println("hello"); 

    } 

看我的解釋和感謝在頁面的底部(cscsaba)

+2

爲什麼要搶Graphics對象?無論如何你無法做任何事情...... – kleopatra 2011-03-30 09:31:16

+0

你在哪裏添加面板? – objects 2011-03-30 09:31:47

+0

你好,謝謝你的努力和答案。 – cscsaba 2011-03-30 12:11:21

回答

1

如果你想要得到的圖形,以儘快繪製你的組件上,因爲它是可見的,不要反對「T。只需覆蓋要顯示的對象的paintComponent方法,然後在其中繪製。

(我不知道爲什麼你的ComponentListener不起作用,而且不能嘗試,因爲你的例子是不完整的。)

+1

就我所瞭解的ComponentListener api而言,顯示/隱藏通知反映了組件的可見性屬性,它在實例化時是真實的(不要問我爲什麼;-) - 因此在啓動時沒有通知。如果您對此感興趣,請使用HierarchyListener(或者是祖先?忘記)。 – kleopatra 2011-03-30 12:37:36

+0

你好,謝謝你的努力和答案。我想抓取Graphics對象,因爲它需要我的抽象座標系統,例如MyAbstractCoordSys使用MyAWTCircle(x,y,直徑,Grhaphics g),並且當它已經退出時我必須捕獲JPanel圖形。這就是爲什麼這個聽衆,這就是爲什麼paintComponent不適合放置形狀的原因。 – cscsaba 2011-03-30 12:50:54

+0

我試圖儘快回答但是5分鐘。限制不允許我以後發帖。 :( – cscsaba 2011-03-30 12:52:01