экспортировать апплет JOGL и встраивать в HTML-страницу - PullRequest
2 голосов
/ 13 января 2011

Это время, когда я тестирую opengl с Java и JOGL. У меня хороший результат, и я хочу опубликовать его в Интернете, но у меня есть проблема. Я нахожусь в затмении, и я тестирую Апплет с JOGL.

РЕДАКТИРОВАТЬ: Благодаря ответу Ricket это решило эту проблему

Во-первых, у меня есть эта ошибка времени выполнения (но программа работает правильно):

java.lang.IllegalArgumentException:
добавление окна в контейнер в

РЕДАКТИРОВАТЬ: но это все еще не работает:

тогда я нашел эту невероятно ясную страницу и я сделал то, что сказал. Я открываю HTML через браузер, библиотеки загружаются, но он останавливается на Starting applet AppletHelloWorld, так как это имя я дал своему апплету.

Может быть, я упускаю что-то вроде основной функции или правильно экспортирую банку?

Это мой основной код:

public class AppletHelloWorld extends Applet 
{


public static void main(String[] args)
 {
 JFrame fr=new JFrame(); 
 fr.setBounds(0,0,1015,600);
 fr.add(new AppletHelloWorld());

 fr.setVisible(true);
 }
  public void init() 
 { 
  setLayout(null); 
  MyJOGLProject canvas = new MyJOGLProject(); //MyJOGLProject extends JFrame
  canvas.run(); // this do setVisible(true)
 } //....

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

Используйте JApplet. Я думаю, что это причина, почему это не удается. (Используйте Webstart с JNLP в NetBeans)

2 голосов
/ 13 января 2011

Как говорится в ошибке, вы пытаетесь добавить окно в контейнер.JFrame - это окно.Вы не можете добавить JFrame ни к чему, включая Контейнер.Я думаю, что, возможно, вы либо не знаете, что такое JFrame, либо не знаете, что такое контейнер.

В идеале вместо этого у вас будет MyJOGLProject extension GLEventListener.Тогда ваша функция инициализации создаст новый GLCanvas, добавит в него экземпляр MyJOGLProject (через addGLEventListener), а затем добавит GLCanvas к вашему апплету.

В качестве альтернативы, если вы в порядке с апплетом, который выдаетJFrame, затем упростите ваш метод инициализации:

public void init() {
    setLayout(null);
    MyJOGLProject canvas = new MyJOGLProject();
    canvas.setVisible(true);
}

Это должно сделать это.

...