Если я закрываю апплет с содержимым JavaFX (так что апплет использует поток EDT и JavaFX), jp2launcher.exe продолжает работать почти 1 минуту, так что апплет не может быть легко запущен снова (как скоро поскольку он не распознается как новый экземпляр - после закрытия браузера и т. д.).jp2launcher.exe не выходит с закрытием апплета
У меня есть поиск в Google, но я не нашел решения. Я нашел только очень похожую проблему - https://bugs.openjdk.java.net/browse/JDK-8051030.
Другое решение было бы, если апплет мог начаться с прочного jp2launcher.exe, но он не может. Это просто не вызывается. Только метод init JApplet переоценивается.
import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import java.awt.Graphics;
import javafx.embed.swing.JFXPanel;
import javafx.application.Platform;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.animation.Timeline;
/*<applet code="sample" width=600 height=600></applet>*/
public class sample extends JApplet{
protected Scene scene;
protected Group group;
Timeline timeline;
JFXPanel fxPanel;
@Override
public final void init(){initSwing();}
private void initSwing(){
fxPanel = new JFXPanel();
add(fxPanel);
Platform.runLater(() ->{initFX(fxPanel);});
}
private void initFX(JFXPanel fxPanel){
timeline=new Timeline();
group=new Group();
scene=new Scene(group);
}
@Override
public void start(){
try{SwingUtilities.invokeAndWait(this::initSwing);}
catch(java.lang.InterruptedException|java.lang.reflect.InvocationTargetException e){}}
}
Измените свой вопрос включать [mcve]; обратите внимание, что [this] (https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html) требуется от апплетов. – trashgod
У меня есть разумный длинный образец этого поведения, но из-за его короткого замыкания вы можете видеть, что * jp2launcher.exe * заканчивается с очень небольшой задержкой, но определенно не заканчивается вместе с завершением апплета. –