2012-03-27 95 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