Eclipseとそのアプレットビューアを使用してアプレットを試します。アプレットビューアがEclipseの上部に表示され、アプレットの実行中にEclipseアイコンをクリックして、タスクバーから最大化します。その後、アプレットビューアはフォーカスを失い、Applet.stop()
呼び出されます。
Eclipseを最小化すると、アプレットビューアが再び前面に出て、フォーカスをApplet.start()
取得して呼び出されます。これは完全な混乱に終わります。
ユーザーが別のタブに変更したり、ブラウザーを最小化したりしたときにブラウザーが呼び出すのは正常な動作ですか?それApplet.stop
を無効にできますか?呼び出されたくstop
ないのですが。
たぶん私はスレッドに何かが欠けています。
私のコードは次のようなものです:
public class AppletApp extends JApplet {
public void init() {
super.init();
System.out.println("AppletApp.init()");
}
public void start() {
System.out.println("AppletApp.start()");
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
getContentPane().add(new JLabel("Test Label"));
}
});
} catch (InterruptedException e) {
} catch (InvocationTargetException e) {}
Runnable runnable = new Runnable() {
@Override
public void run() {
//For DJ Browser Component
NativeSwing.initialize();
NativeInterface.open();
//connect to server and start message exchange
Client.init(userInterface);
userInterface.authenticate();
NativeInterface.runEventPump();
}
};
Thread t = new Thread(runnable);
t.start();
}
public void stop() {
System.out.println("AppletApp.stop()");
}
public void destroy() {
System.out.println("AppletApp.destroy()");
}
}