Проблема преобразования Java-приложения в апплет - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь преобразовать работающее простое Java-приложение в апплет.Приложение состоит из main.java и gooey.java

Main.java

package hellow_convert;
import javax.swing.JApplet;
public class main extends JApplet {
public static void main(String[] args) {
gooey gui = new gooey();    
}
public void init() 
{ 
gooey gui = new gooey();        
} 
public void stop() {}
}

gooey.java

package hellow_convert;
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class gooey {    
public  JFrame f = new JFrame();
private JPanel pnlNorth = new JPanel(); 
private JButton btnNorth = new JButton("North");
private JMenuBar mb = new JMenuBar(); // MenuBar
private JMenu mnuFile = new JMenu("File"); // File Entry on Menu bar
private JMenuItem mnuItemAbout = new JMenuItem("About"); // About Entry
public gooey(){
f.setJMenuBar(mb);
mb.add(mnuFile);       
mb.add(mnuHelp);
pnlNorth.add(btnNorth);
f.getContentPane().setLayout(new BorderLayout());
f.getContentPane().add(pnlNorth, BorderLayout.NORTH);
f.setBounds(100, 100, 200, 100);
}
}

Похоже на это.Applet Я просто не могу заставить его работать как апплет.Когда я запускаю его в режиме отладки, открывается окно апплета, а затем появляется окно JFrame (как в приложении).Как приложение, оно работает как положено, но как мне получить элементы управления в окне апплета?Я новичок в этом.Любая помощь приветствуется!

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Ну, JApplet сам по себе является контейнером Swing, и поэтому вам придется использовать панель содержимого апплета в вашем классе gooey вместо того, чтобы всегда использовать JFrame (который является окном рабочего стола и не будет работать сапплет).

Попробуйте передать JApplet или JFrame конструктору gooey() вместо создания JFrame в этом классе.

Редактировать: ваш конструктор может выглядеть следующим образом:

public gooey(RootPaneContainer c){
  c.getRootPane().setJMenuBar(mb);
  mb.add(mnuFile);       
  mb.add(mnuHelp);
  pnlNorth.add(btnNorth);
  c.getContentPane().setLayout(new BorderLayout());
  c.getContentPane().add(pnlNorth, BorderLayout.NORTH);      

}

Затем назовите его следующим образом:

JFrame f = new JFrame(...);
new gooey(f);

или

JApplet a = new JApplet(...);        
new gooey(a);

Вы также можете сделать это в своем основном классе, так какэто уже экземпляр апплета

new gooey(this);

setBounds(...) должен вызываться только при работе с JFrame.

1 голос
/ 22 июня 2011

Я бы посоветовал вам начать с изучения учебника по апплетам .... апплетам необходимо иметь метод init вместо main (среди прочего) -> http://download.oracle.com/javase/tutorial/deployment/applet/getStarted.html

...