什么是Java SE应用程序生命周期....或者它没有?

时间:2011-11-10 13:10:08

标签: java swing user-interface frameworks

我从iPhone编程开始,我发现iPhone有一个清晰的画面,让开发人员知道该做什么,比如loadViewviewWillAppear等等。现在,我想写一些Java SE程序,但它并不像我想的那么容易。我发现Java似乎没有这些东西(或者我不知道细节)。我发现Java纯粹使用JFrame来创建GUI,如下所示:

import javax.swing.*;

   class MyFrame extends JFrame {
      public MyFrame() {
        setTitle("My Empty Frame");
        setSize(300,200); // default size is 0,0
        setLocation(10,200); // default is 0,0 (top left corner)
      }

      public static void main(String[] args) {
        JFrame f = new MyFrame();
        f.show();
      }
    }

是将Java放入main方法的Java方法吗?有更好的架构吗?

4 个答案:

答案 0 :(得分:6)

iPhone“应用程序”具有生命周期,因为它们不是传统意义上的“应用程序”。它们更类似于驱动程序,插件或其他旨在嵌入更大框架中的位。它们周围有很多脚手架使它们工作,脚手架在适当的时候调用各种处理程序。脚手架不被视为应用程序的一部分,但它是运行代码的重要组成部分。

Java本身是一种编程语言,您可以在其中编写相同类型的“插件” - 例如,Java applet,Java servlet,Enterprise Java Beans等 - 但您也可以使用Java编写框架也是!存在大量此类框架,然后编写应用程序只需编写一个或多个“插件”。但是如果你坐下来写一个main()方法并从那里开始,那么你就避开了任何框架,并完全自由地构建代码。

答案 1 :(得分:1)

欧内斯特弗里德曼希尔的回答恰到好处。如果您更愿意使用应用程序框架,我可以推荐Jide JDAF(我不隶属于它们)。它是编写Swing应用程序的商业框架。它有一个可以让你快速入门的向导,你可以试用web start demo

这消除了自己做所有事情的自由,但它为您提供了如何开发应用程序的明确指南。

答案 2 :(得分:0)

就我所知,JavaSE本身并不提供生命周期模型。虽然Eclipse equinox基于OSGi框架,但是如果您使用它,您可以拥有生命周期模型,或者您可以坚持使用简单的OSGi。
或者Sun也开发了某种应用程序框架,但我不知道它的名字......
(顺便说一句,如果你看得更深,所有容器最后都用一个简单的主方法运行:)

答案 3 :(得分:-2)

import javax.swing.*;
import java.awt.Dimension;

class MyFrame extends JFrame {
  public MyFrame() {
    setTitle("My Empty Frame");
    setPreferredSize(new Dimension(300, 200)); // default size is 0,0
    setLocation(10, 200); // default is 0,0 (top left corner)
    pack();
    setVisible(true); 
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            new MyFrame();
        }
    });
  }
}