2012-03-27 53 views
2

是否有可能向JFrame(或AWT框架)添加Applet(特定于JBufferedApplet)。将JApplet添加到JFrame(或AWT框架)

我已经尝试过这个,但它看起来像Applet根本不运行。它使JFrame的背景颜色变为灰色(与Applet颜色相同),但仅此而已。

没有可能将JApplet更改为JPanel(我没有访问代码)。

所有这一切对当下要做的是小程序添加到一个JFrame/AWT框架

这是我的代码至今:

import javax.swing.JFrame; 

public class FormFrame extends JFrame { 

    public FormFrame() { 
     super("Oracle Forms"); 
     Main m = new Main(); 
     getContentPane().add(m); //add(m); 
     setSize(800, 600); 
     setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new FormFrame(); 
    } 

} 

它所给的背景颜色的Applet。它看起来像Applet不运行。

+0

您有没有关于向框架添加小程序的其他问题?顺便说一句 - 具体什么是JBufferedApplet?获得了分发该网站的网址?访问工作版本的URL? – 2012-03-27 23:33:10

+0

是的,还有另一个线程,但是当我尝试编辑它时,为了添加我正在处理的JFrame,出现了问题。我再也找不到线了,所以我不得不打开一个新线。 JBufferedApplet是专为Oracle Forms开发的(我认为)。它只是从Applet中插入。我也不太了解它,因为关于它的信息不多。 – Arolition 2012-03-28 08:39:39

回答

4

你总是可以尝试添加该applet的contentPane的,是这样的:

public class FormFrame extends JFrame { 

    public FormFrame() { 
     super("Oracle Forms"); 
     MyApplet myApplet = new MyApplet(); 
     myApplet.start(); 
     myApplet.init(); 
     getContentPane().add(myApplet.getContentPane()); 
     setSize(800, 600); // not sure about this. Usually better to call pack(); 
     setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
    } 

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

只是不要忘记调用Applet的init()方法,使其能够初始化它的所有组件。

编辑:根据trashgod的优秀建议对线程安全性进行了更改。

+0

我试过了,没有解决它。我也尝试添加'myApplet.start()',但也是消极的。 我试着打印出AppletContext,但它给出了一个NullPointerException。当我尝试在Netbeans中独立运行Applet时,它完美地工作。所以出于某种原因,Applet似乎并没有得到执行。 – Arolition 2012-03-27 14:54:06

+1

@Arolition:如果你在提取applet的contentPane()之前调用applet的start()和init()方法? – 2012-03-27 14:57:18

+1

Applets也必须尊重[初始线程](http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)。 – trashgod 2012-03-27 16:14:08