Multithreading 如何在单独的线程中打开JavaFX浏览器

Multithreading 如何在单独的线程中打开JavaFX浏览器,multithreading,Multithreading,我有一个简单的JavaFx浏览器,它是通过一个JButton启动的,它被放置在一个JFrame中。现在,我想将JavaFXBroser放入一个单独的线程中,即使JFrame关闭,该线程也应该运行。现在,如果我用这个JButton关闭JFrame,JavaFx浏览器也会关闭。我尝试过多种组合,在互联网上做过研究,但没有成功。希望你们能帮我举个小例子。谢谢 browser.addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件e){ 如果(例如ge

我有一个简单的JavaFx浏览器,它是通过一个JButton启动的,它被放置在一个JFrame中。现在,我想将JavaFXBroser放入一个单独的线程中,即使JFrame关闭,该线程也应该运行。现在,如果我用这个JButton关闭JFrame,JavaFx浏览器也会关闭。我尝试过多种组合,在互联网上做过研究,但没有成功。希望你们能帮我举个小例子。谢谢

browser.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
如果(例如getSource()==浏览器){
//创建一个JFXPanel,它将启动FXToolkit
//如果尚未启动:-folosit pt a integra component de tip FX Stage in component swing(mai vechi)(JFrame)
JFXPanel fxPanel=新的JFXPanel();
Platform.runLater(新的Runnable(){
@凌驾
公开募捐{
场景;
TextField地址字段;
网络视图;
网络引擎;
Stage=null;
按钮重载按钮、goButton、backButton、forwardButton、historyList;
HBox HBox=新的HBox(5);
hBox.设置校准(位置中心);
//用于输入web地址的文本字段。
addressField=新文本字段(“Ionutz说:在这里输入地址…”);
addressField.setPrefColumnCount(50);//使字段至少有50列宽。
//将所有输出导航节点添加到vbox。
重新加载按钮=新按钮(“重新加载页面”);
goButton=新按钮(“搜索”);
backButton=新按钮(“后退”);
前进按钮=新按钮(“前进”);
historyList=新按钮(“历史”);
字符串urlSearch=”http://icons.iconarchive.com/icons/ampeross/qetto-2/24/search-icon.png";
字符串URLELOAD=”http://icons.iconarchive.com/icons/graphicloads/colorful-long-shadow/24/Arrow-reload-2-icon.png";
字符串URLBack=”http://icons.iconarchive.com/icons/custom-icon-design/flatastic-1/24/back-icon.png";
字符串URLForward=”http://icons.iconarchive.com/icons/custom-icon-design/flatastic-1/24/forward-icon.png";
字符串URLHistory=”http://icons.iconarchive.com/icons/delacro/id/24/History-icon.png";
setGraphic(新图像视图(urlSearch));
setGraphic(新图像视图(URLROAD));
设置图形(新图像视图(URLForward));
setGraphic(新的ImageView(URLBack));
historyList.setGraphic(新图像视图(URLHistory));
hBox.getChildren().addAll(backButton、forwardButton、addressField、reloadButton、goButton、historyList);
//我们的WEV显示在页面上。
webView=新建webView();
//管理页面的引擎。
webEngine=webView.getEngine();
setJavaScriptEnabled(true);
webEngine.load(“http://www.google.ro");
//我们的主要应用程序布局包括5个区域。
BorderPane根=新的BorderPane();
root.setPrefSize(1280720);
//将每个节点添加到边框窗格。
根.setTop(hBox);
root.setCenter(webView);
//我们的场景是JavaFX中所有动作发生的地方。一个场景包含所有节点,其根节点是我们的边界窗格。
场景=新场景(根);
//舞台管理场景。
fxPanel.setScene(场景);
JFrame browserFrame=新JFrame();
browserFrame.add(fxPanel);
setTitle(“Ionutz Asaftei浏览器”);
browserFrame.setBounds(2002001280720);
browserFrame.setVisible(真);
//adaugam事件处理程序!!!!-cele mai简单pt按钮
setOnAction(新的EventHandler(){
公共无效句柄(javafx.event.ActionEvent){
webEngine.reload();
}
});
setOnAction(新的EventHandler(){
公共无效句柄(javafx.event.ActionEvent){
load(“http://“+addressField.getText());
}
});
setOnAction(新的EventHandler(){
公共无效句柄(javafx.event.ActionEvent){
webEngine.getHistory().go(1);//函数中的avanseaza cu o pagina
}
});
setOnAction(新的EventHandler(){
公共无效句柄(javafx.event.ActionEvent){
webEngine.getHistory().go(-1);//在urma cu o pagina中合并到functie de intrarile din history中
}
});
}