Добавить JApplet в JFrame (или AWT Frame)


Есть ли возможность добавить апплет (jbufferedapplet, чтобы быть конкретным) к JFrame (или фрейму AWT).

Я уже пробовал это, но похоже, что апплет просто не запускается. Это делает цвет фона JFrame серым (тот же цвет апплета), но не более того.

Нет возможности изменить 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();
    }

}

Все, что он дает, - это цвет фона апплета. Похоже, что апплет не работает.

1 2

1 ответ:

Вы всегда можете попробовать добавить 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();
         }
      });
   }
}
Просто не забудьте вызвать метод апплета init(), чтобы он мог инициализировать все свои компоненты.

Edit : изменения, внесенные для потокобезопасности в соответствии с отличной рекомендацией trashgod.