1

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

主.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);
}
}

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

4

2 回答 2

4

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

尝试将 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);

你也可以在你的主类中这样做,因为它已经是一个小程序实例

new gooey(this);

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

于 2011-06-22T12:21:47.013 回答
1

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

于 2011-06-22T12:20:17.210 回答