将Java应用程序转换为小程序时出现问题

将Java应用程序转换为小程序时出现问题,java,swing,applet,awt,japplet,Java,Swing,Applet,Awt,Japplet,我正在尝试将一个正常工作的简单Java应用程序转换成一个小程序。该应用程序由main.java和goey.java组成 Main.java goey.java 看起来像这样。 我似乎无法让它作为小程序运行。当我在debug中运行它时,会打开一个applet窗口,然后会弹出JFrame窗口(就像在应用程序中一样)。作为一个应用程序,它按预期运行,但如何将控件放入小程序窗口? 我是新来的。感谢您的帮助 我建议您先看看小程序教程。。。。小程序需要一个init方法,而不是main方法(除其他外)->我建

我正在尝试将一个正常工作的简单Java应用程序转换成一个小程序。该应用程序由main.java和goey.java组成

Main.java

goey.java

看起来像这样。 我似乎无法让它作为小程序运行。当我在debug中运行它时,会打开一个applet窗口,然后会弹出JFrame窗口(就像在应用程序中一样)。作为一个应用程序,它按预期运行,但如何将控件放入小程序窗口?
我是新来的。感谢您的帮助

我建议您先看看小程序教程。。。。小程序需要一个init方法,而不是main方法(除其他外)->

我建议您先看看小程序教程。。。。小程序需要有一个init方法,而不是main(除其他外)->

好吧,JApplet本身就是一个Swing容器,因此您必须在类中使用小程序的内容窗格
goey
,而不是总是使用JFrame(这是一个桌面窗口,不能与小程序一起工作)

尝试将JApplet或JFrame传递给
goey()
构造函数,而不是在该类中创建JFrame

编辑:您的构造函数可能如下所示:

public gooey(RootPaneContainer c){
  c.getRootPane().setJMenuBar(mb);
  mb.add(mnuFile);       
  mb.add(mnuHelp);
  pnlNorth.add(btnNorth);
  c.getContentPane().setLayout(new BorderLayout());
  c.getContentPane().add(pnlNorth, BorderLayout.NORTH);      
}

那么就这样称呼它:

JFrame f = new JFrame(...);
new gooey(f);

您也可以在主类中执行此操作,因为它已经是一个小程序实例

new gooey(this);

只有在处理JFrame时才应该调用
setBounds(…)

好吧,JApplet本身就是一个Swing容器,因此您必须在类
gooey
中使用小程序的内容窗格,而不是始终使用JFrame(这是一个桌面窗口,不能与小程序一起工作)

尝试将JApplet或JFrame传递给
goey()
构造函数,而不是在该类中创建JFrame

编辑:您的构造函数可能如下所示:

public gooey(RootPaneContainer c){
  c.getRootPane().setJMenuBar(mb);
  mb.add(mnuFile);       
  mb.add(mnuHelp);
  pnlNorth.add(btnNorth);
  c.getContentPane().setLayout(new BorderLayout());
  c.getContentPane().add(pnlNorth, BorderLayout.NORTH);      
}

那么就这样称呼它:

JFrame f = new JFrame(...);
new gooey(f);

您也可以在主类中执行此操作,因为它已经是一个小程序实例

new gooey(this);

setBounds(…)
只能在处理JFrame时调用。

我有一个init方法(请参见代码)。Main是我们班的名字。小程序将初始化,但控件将在单独的JFrame中打开。很抱歉,您是对的。。。你的代码很难读!我错过了。。。本质上,问题在于您使用的JFrame。。。这是一个桌面窗口,不是一个与applet相关的类。我有一个init方法(请参阅代码)。Main是我们班的名字。小程序将初始化,但控件将在单独的JFrame中打开。很抱歉,您是对的。。。你的代码很难读!我错过了。。。本质上,问题在于您使用的JFrame。。。这是一个桌面窗口-不是与小程序相关的类。谢谢。。请你再详细说明一下好吗?我试过容器c=这个;把c传给gooey。在使用c.getContentPane()之前,我需要执行一些类型转换吗?当我执行JApplet a=this时,它就起作用了;谢谢(请编辑您的答案以反映相同的情况)@anirudh我不确定您在哪里做了
JApplet a=thisJApplet a=this