我只是想了解控制流程
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);
}
}
答案 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,例如当最终用户转到另一个网页时。
阅读整篇文章了解更多详情。