Java 未激发Swing ComponentListener.ComponentShowed

Java 未激发Swing ComponentListener.ComponentShowed,java,swing,components,Java,Swing,Components,我想在显示WorldPanel时获得(图形g)。多亏了stackoverflow,我看到了应该在哪里使用getGraphics方法(ComponentListener.ComponentShowed)的答案,但不知何故,我的侦听器无法捕捉到显示的组件 我做错了什么?在代码段的底部不能显示“hello” public class MainPanel extends javax.swing.JPanel implements ComponentListener { private CWorl

我想在显示WorldPanel时获得(图形g)。多亏了stackoverflow,我看到了应该在哪里使用getGraphics方法(ComponentListener.ComponentShowed)的答案,但不知何故,我的侦听器无法捕捉到显示的组件

我做错了什么?在代码段的底部不能显示“hello”

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)

如果您想获取图形对象以便在组件一出现就在其上绘制,请不要这样做。只需覆盖要显示的对象的
paintComponent
方法,并在其中进行绘制


(我不知道为什么ComponentListener不工作,因为您的示例不完整,所以无法尝试。)

如果要获取图形对象以便在组件一出现就在其上绘制,请不要这样做。只需覆盖要显示的对象的
paintComponent
方法,并在其中进行绘制


(我不知道为什么您的ComponentListener不起作用,因为您的示例不完整,所以无法尝试。)

为什么要获取图形对象?无论如何,你不能用它做任何事情…你好,谢谢你的努力和答案。你为什么要抓取一个图形对象?无论如何,你不能用它做任何事情…您好,感谢您的努力和回答。就我对ComponentListener api的理解而言,显示/隐藏的通知反映了组件的可见性属性,这在实例化时是真实的(不要问我为什么;-),因此启动时没有通知。如果你对此感兴趣的话,请使用一个层次化的倾听者(或者是祖先?忘记了)。您好,谢谢您的努力和回答。我想抓取图形对象,因为它需要我的抽象坐标系,例如MyAbstractCoordSys使用MyAWTCircle(x,y,diameter,Grhaphics g),当它已经存在时,我必须捕捉JPanel图形。这就是为什么听者,这就是为什么paintComponent不是一个很好的放置框架形状的地方。我已经试着提前回答,但5分钟。限制也不允许我稍后发布(paintComponent是您唯一拥有的地方;-)如果这一事实不符合您的设计,请更改设计。克利奥帕特拉:很明显,没有任何选项可以让我的生活更轻松,我怀疑您是对的:)据我所知,ComponentListener api,显示/隐藏通知反映组件的可见性属性,该属性在实例化时为真(不要问我为什么;-)-因此启动时没有通知。如果你对此感兴趣的话,请使用一个层次化的倾听者(或者是祖先?忘记了)。您好,谢谢您的努力和回答。我想抓取图形对象,因为它需要我的抽象坐标系,例如MyAbstractCoordSys使用MyAWTCircle(x,y,diameter,Grhaphics g),当它已经存在时,我必须捕捉JPanel图形。这就是为什么听者,这就是为什么paintComponent不是一个很好的放置框架形状的地方。我已经试着提前回答,但5分钟。限制也不允许我稍后发布(paintComponent是你唯一拥有的地方;-)如果这个事实不符合你的设计,那就改变设计。克利奥帕特拉:很明显,没有任何选择可以让我的生活更轻松,我怀疑你是对的:)