将Java Application转换为Applet的问题

时间:2011-06-22 12:17:13

标签: java swing applet awt japplet

我正在尝试将工作简单Java应用程序转换为applet。该应用程序由main.java和gooey.java

组成
  

Main.java

package hellow_convert;
import javax.swing.JApplet;
public class main extends JApplet {
public static void main(String[] args) {
gooey gui = new gooey();    
}
public void init() 
{ 
gooey gui = new gooey();        
} 
public void stop() {}
}
  

gooey.java

package hellow_convert;
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class gooey {    
public  JFrame f = new JFrame();
private JPanel pnlNorth = new JPanel(); 
private JButton btnNorth = new JButton("North");
private JMenuBar mb = new JMenuBar(); // MenuBar
private JMenu mnuFile = new JMenu("File"); // File Entry on Menu bar
private JMenuItem mnuItemAbout = new JMenuItem("About"); // About Entry
public gooey(){
f.setJMenuBar(mb);
mb.add(mnuFile);       
mb.add(mnuHelp);
pnlNorth.add(btnNorth);
f.getContentPane().setLayout(new BorderLayout());
f.getContentPane().add(pnlNorth, BorderLayout.NORTH);
f.setBounds(100, 100, 200, 100);
}
}

看起来像这样。 Applet 我似乎无法让它作为applet运行。当我在调试中运行它时,会打开一个applet窗口,然后弹出JFrame窗口(就像在应用程序中一样)。作为一个应用程序,它按预期运行,但如何让控件进入Applet窗口? 我是新手。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:4)

好吧,JApplet本身就是一个Swing容器,因此你必须在类gooey中使用applet的内容窗格,而不是总是使用JFrame(这是一个桌面窗口,不会起作用)用applet)。

尝试将JApplet或JFrame传递给gooey()构造函数,而不是在该类中创建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);

JApplet a = new JApplet(...);        
new gooey(a);

您也可以在主类中执行此操作,因为它已经是applet实例

new gooey(this);

只应在处理JFrame时调用setBounds(...)

答案 1 :(得分:1)

我建议你先看一下Applet教程.... applets需要一个init方法而不是main(除其他外) - > http://download.oracle.com/javase/tutorial/deployment/applet/getStarted.html