我无法理解以下程序的流程。任何人都可以告诉我关于程序的流程哪个类到哪一个?

时间:2013-07-05 11:44:16

标签: java

我只是想了解控制流程

class SampleFrame extends Frame 
{

    SampleFrame (String title)
    {

        super(title);
        MyWindowAdapter adapter = new MyWindowAdapter (this);

        addWindowListener(adapter);
    }

    @Override
    public void paint(Graphics g)
    {

        g.drawString("this is in frame window", 10, 40);
    }
}


class MyWindowAdapter extends WindowAdapter
{

    SampleFrame sampleframe;
    public MyWindowAdapter (SampleFrame sampleframe)
    {
        this.sampleframe = sampleframe;
    }

    @Override
    public void windowClosing(WindowEvent we)
    {
     sampleframe.setVisible(false);   
    }
}

class AppletFrame extends Applet
{
    Frame f ;

    @Override
    public void init()
    {
        f = new SampleFrame("A frame Window");
        f.setSize(250,250);
        f.setVisible(true);
    }
    @Override
    public void start()
    {
      f.setVisible(true);  
    }
    @Override
    public void stop() 
    {
      f.setVisible(false);  
    }
    @Override
    public void paint(Graphics g)
    {
       g.drawString("This is in appletwindow",10, 20); 
    }
}

2 个答案:

答案 0 :(得分:1)

关于任何UI程序的事情(就像你在Swing中这样)是你需要理解没有明确的程序流程(除了生命周期回调),一切都取决于用户如何与GUI交互甚至点。

一个典型的Swing程序将有一个带有 public static void main()的类,它将使用您共享代码的类之一初始化窗口和框架。然后它通常会进入一个循环来处理用户交互并激活回调

在您的情况下,由于您有一个 Applet ,它是创建其实例的浏览器(而不是带有 psvm 的引导类),然后接收生命周期回调。例如,

public void init()
调用

来初始化您的框架和其他UI资源,就像您希望它们首先加载 Applet 时一样。从那时起,它取决于用户如何与GUI交互。例如,如果用户请求关闭窗口

public void windowClosing(WindowEvent we)
会自动调用

来关闭或隐藏您的UI资源。

答案 1 :(得分:0)

要实现的关键是Java本身将调用扩展Applet的类的方法。知道这一点应足以追踪此后的控制流程。例如,来自this article

首次创建applet并由底层软件加载时,将调用init方法。 (...)访问applet时调用start方法。 (...)执行start方法后,事件线程调用paint方法绘制到applet的Panel。 (...)当applet不再出现在屏幕上时,stop方法会停止applet,例如当最终用户转到另一个网页时。

阅读整篇文章了解更多详情。