JavaFx调用另一个面板并传输值
我的程序在界面上是结构化的包和控件,如下所示JavaFx调用另一个面板并传输值,javafx,webview,fxml,pane,fxmlloader,Javafx,Webview,Fxml,Pane,Fxmlloader,我的程序在界面上是结构化的包和控件,如下所示 **+ Browser : BrowserController.class** -@FXML private SplitPane spHTMLParser; @FXML private TextField txtURL;
**+ Browser : BrowserController.class**
-@FXML
private SplitPane spHTMLParser;
@FXML
private TextField txtURL;
@FXML
private Button btnSearch;
@FXML
private WebView browser;
**+ Browser/Console : ConsoleController.class**
@FXML
private Label lblURL;
在浏览器页面中,当用户单击BTN搜索时,我将显示带有用户输入url的webview站点。当这个过程完成后,我想用SplitPane在Browser.fxml中显示Console.fxml,当显示控制台时,我希望标签可以获取url值。请帮帮我
@FXML
void btnSearch(ActionEvent event) {
String url = txtURL.getText().trim();
if (!url.isEmpty()) {
WebEngine webEngine = browser.getEngine();
progressBar.progressProperty().bind(webEngine.getLoadWorker().progressProperty());
webEngine.load(url);
webEngine.getLoadWorker().stateProperty().addListener((ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) -> {
switch (newValue) {
case SUCCEEDED:
if (count++ != 0) {
btnNext.setDisable(false);
}
btnBack.setDisable(false);
progressBar.setVisible(false);
{
try {
FXMLLoader fxmlLoader = new FXMLLoader();
Pane pnConsole = fxmlLoader.load(getClass().getResource("console/Console.fxml").openStream());
spHTMLParser.getItems().add(pnConsole);
spHTMLParser.setDividerPositions(0.5);
} catch (IOException ex) {
Logger.getLogger(BrowserController.class.getName()).log(Level.SEVERE, null, ex);
}
}
break;
}
});
}
}
看起来FXML文件的路径是错误的。例如,在顶部代码块中,您似乎建议使用名为
Console
的包,但在尝试加载FXML的代码中,您引用了名为Console
的包。不确定这是打字错误还是其他错误。Hm可能重复,为什么不简单地使用fxmloader.load(getClass().getResource(“console/console.fxml”)代码>?我很好奇…嗨,谢谢你的帮助,我是错误的路径错误@GoXR3Plus我在这里发现这样的xml调用,我不知道它的不同之处,只是看起来FXML文件的路径是错误的。例如,在顶部代码块中,您似乎建议使用名为Console
的包,但在尝试加载FXML的代码中,您引用了名为Console
的包。不确定这是打字错误还是其他错误。Hm可能重复,为什么不简单地使用fxmloader.load(getClass().getResource(“console/console.fxml”)代码>?我很好奇…嗨,谢谢你的帮助,我是错误的路径错误@GoXR3Plus我发现这样的xml在这里调用,我不知道它在哪里不同
Pane pnConsole = fxmlLoader.load(getClass().getResource("console/Console.fxml").openStream());
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at publishers.controllers.resources.browser.BrowserController.lambda$webView$4(BrowserController.java:144)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ReadOnlyObjectPropertyBase.fireValueChangedEvent(ReadOnlyObjectPropertyBase.java:74)
at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(ReadOnlyObjectWrapper.java:102)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
at javafx.scene.web.WebEngine$LoadWorker.updateState(WebEngine.java:1260)
at javafx.scene.web.WebEngine$LoadWorker.dispatchLoadEvent(WebEngine.java:1371)
at javafx.scene.web.WebEngine$LoadWorker.access$1200(WebEngine.java:1253)
at javafx.scene.web.WebEngine$PageLoadListener.dispatchLoadEvent(WebEngine.java:1240)
at com.sun.webkit.WebPage.fireLoadEvent(WebPage.java:2400)
at com.sun.webkit.WebPage.fwkFireLoadEvent(WebPage.java:2244)
at com.sun.webkit.network.URLLoader.twkDidFinishLoading(Native Method)
at com.sun.webkit.network.URLLoader.notifyDidFinishLoading(URLLoader.java:838)
at com.sun.webkit.network.URLLoader.lambda$didFinishLoading$96(URLLoader.java:829)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)