2011-03-30 86 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