Есть ли способ перезагрузить / обновить Java-апплет из самого апплета?

У меня есть кнопка на моем апплете (содержащаяся в браузере), которую я хотел бы перезагрузить или обновить весь апплет одним из двух способов:

Refresh the applet itself without having to refresh the browser Refresh the entire browser

Возможно ли это из апплета?

 Pool27 июн. 2009 г., 01:09

Ответы на вопрос(2)

applet.getAppletContext().showDocument(applet.getDocumentBase(), "_self")

Это загрузит документ, содержащий апплет, в то же окно / фрейм, в котором апплет уже загружен.

вонить в JavaScript и удалить / повторно добавить апплет оттуда. использованиеLiveConnect чтобы позвонить с Java на JS и обязательно использовать «MAYSCRIPT» атрибут в вашем теге апплета.

В вашем методе JavaScript удалите апплет из DOM и добавьте новый вместо него.

Вы также можете поместить апплет в iFrame, что дает вам больше возможностей.

Но какова ваша цель в перезагрузке апплета? Было бы безопаснее полностью решить эту проблему в апплете, а не полагаться на JavaScript (и ваш JAR, скорее всего, все равно будет кэшироваться, поэтому вы просто перезапускаете тот же апплет).

Я предлагаю либо:

code your applet so that you can reset its GUI and data with a method call, or run the applet via a small wrapper applet which can drop/recreate the real applet it is displaying.

Для подхода апплета обертки: реализуйте AppletStub, создайте экземпляр реального апплета и отобразите его как центр BorderLayout, что-то вроде этого (в вашем методе start ()):

Applet applet = new TheRealApplet();
applet.setStub(this);
this.setLayout( new BorderLayout() );
add( applet, BorderLayout.CENTER );
applet.init();
applet.start();

... затем вызовите applet.stop () в методе stop () оболочки и добавьте новый метод, который перезапускает апплет - остановив его, удалив из макета и добавив свежий экземпляр.

Ваш ответ на вопрос