【问题标题】:Tool to convert a Java Swing application into applet将 Java Swing 应用程序转换为小程序的工具
【发布时间】:2012-04-05 03:52:12
【问题描述】:

我有一个很大的 Swing 项目。有没有什么工具可以将 Swing 应用的 jar 文件转换成小程序?

【问题讨论】:

  • 你能不能@AndrewThompson 发表你的评论作为我想检查的答案:)

标签: java swing applet


【解决方案1】:

如果原始项目创建了一个 JFrame,您可以简单地通过

获取 JFrame 的 contentPane
Container contentPane = myFrame.getContentPane();

然后将它添加到 JApplet 作为它的 contentPane,但你会丢失菜单等。

例如,

public class MyApplet extends JApplet {

   @Override
   public void init() {
      try {
         SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
               JFrame myFrame = new MyFrame("Frame");
               Container contentPane = myFrame.getContentPane();
               setContentPane(contentPane);
            }
         });
      } catch (InterruptedException e) {
         e.printStackTrace();
      } catch (InvocationTargetException e) {
         e.printStackTrace();
      }
   }
}

最好让您的大多数 GUI 类从一开始就适合创建 JPanel,这样您就不会遇到这个限制。

【讨论】:

  • 请注意,大多数应用程序执行沙盒小程序中不允许的操作,例如调用frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)System.exit(0)。从小程序启动框架或使用其内容似乎从来没有那么简单。
  • +1 表示精心设计的内容,它承认提到的 hybrid 初始化here
【解决方案2】:

作为替代方案,您可能希望启动当前应用。来自使用Java Web Start 的链接。无需转换,比部署小程序容易得多。

【讨论】:

    【解决方案3】:

    该工具有 4 行代码:

    public class MyApplet extends Applet {
        public void start() {
             MyApplication.main(new String[0]);
        }
    }
    

    这个小程序将在没有命令行参数的情况下运行您的应用程序。这里的限制是,appet 会打开它自己的窗口。它不会运行到浏览器窗口中。在常见情况下将其运行到浏览器中并非易事,因为布局可能是动态的,并且可能在 JFrame 本身上创建。因此,您需要一些应用程序结构的知识才能完全移植它。 好消息是,在大多数情况下,这并不难。只需调用将组件添加到 JFrame 的代码,使用扩展 Panel 的小程序本身,因此是容器。

    如果你的应用接收到参数,你应该实现applet的init()方法。

    【讨论】:

    • “这个小程序将在没有命令行参数的情况下运行您的应用程序。” 每次调用 start() 时(例如每次从最小化状态恢复浏览器时)。请注意,大多数应用程序执行沙盒小程序中不允许的操作,例如调用frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)System.exit(0)。从小程序启动框架或使用其内容似乎从来没有那么简单。
    猜你喜欢
    • 2015-10-16
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多