2012-03-20 102 views

回答

3

作爲替代方案,您可能會考慮啓動當前的應用程序。從鏈接使用Java Web Start。不需要轉換,並且比部署小應用程序更容易。

+0

1+偉大的rec! – 2012-03-28 21:34:40

4

如果原項目創建了一個JFrame,你可以簡單地通過

Container contentPane = myFrame.getContentPane(); 

得到的JFrame的contentPane中,然後添加它JApplet的公司作爲其contentPane的,但你會失去菜單和這樣。

對於例如,

public class MyApplet extends JApplet { 

    @Override 
    public void init() { 
     try { 
     SwingUtilities.invokeAndWait(new Runnable() { 
      public void run() { 
       JFrame myFrame = new MyFrame("Frame"); 
       Container contentPane = myFrame.getContentPane(); 
       setContentPane(contentPane); 
      } 
     }); 
     } catch (InterruptedException e) { 
     e.printStackTrace(); 
     } catch (InvocationTargetException e) { 
     e.printStackTrace(); 
     } 
    } 
} 

最好有最追崇創建JPanels您的GUI類,從一開始走,這樣你就不會遇到這種限制。

+0

對於'getContentPane()'+1。我不知道這件事。 – AlexR 2012-03-20 16:39:11

+3

請注意,大多數應用程序執行沙箱小程序中不允許的操作,例如調用'frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)'或'System.exit(0)'。它從來沒有像從applet啓動框架或使用其內容那麼簡單。 – 2012-03-20 16:49:08

+0

+1的合理內容,它承認_hybrid_初始化提到[這裏](http://stackoverflow.com/a/9106263/230513)。 – trashgod 2012-03-20 17:27:10

2

的工具是4行代碼長:

public class MyApplet extends Applet { 
    public void start() { 
     MyApplication.main(new String[0]); 
    } 
} 

這個小程序將運行不帶命令行參數的應用程序。這裏的侷限性是這個應用會打開自己的窗口。它不會進入瀏覽器窗口。在常見情況下將其運行到瀏覽器中並不是一項簡單的任務,因爲佈局可能是動態的,並且可能在JFrame本身上創建。因此,您需要了解應用程序結構的一些知識才能完全移植它。 好消息是,在大多數情況下它並不那麼難。只需調用將小部件添加到JFrame的代碼,並使用小程序本身來擴展Panel,因此它就是容器。

如果您的應用程序收到參數,您應該實現init()小程序的方法。

+1

*「這個小程序將運行你的應用程序,而不需要命令行參數。」*每次調用start()時(例如每次瀏覽器從最小化恢復時)。請注意,大多數應用程序執行沙箱小程序中不允許的操作,例如調用'frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)'或'System.exit(0)'。它從來沒有像從applet啓動框架或使用其內容那麼簡單。 – 2012-03-20 16:48:42

相關問題