我正在评估JxBrowser 6.4作为我们应用程序的浏览器引擎。我们需要我们的软件才能在Window和OSX上运行。当我尝试为JxBrowser 6运行javafx示例时,它只是挂起(没有窗口出现)。没有例外,应用程序只是挂起而没有任何UI。
这里是代码(从jxbrowser文档中复制粘贴):
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JfxView extends Application {
@Override
public void start(Stage primaryStage) {
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
StackPane pane = new StackPane();
pane.getChildren().add(browserView);
Scene scene = new Scene(pane, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
browser.loadHTML("<html><body><h1>Hello world!</h1></body></html>");
}
public static void main(String[] args) {
launch(args);
}
}
最后几个日志如下:
JxBrowser license valid.
08:10:02 INFO: OS name: Mac OS X
08:10:02 INFO: JRE version: 1.8.0_65 64-bit
08:10:02 INFO: JxBrowser version: 6.4
08:10:02 INFO: JxBrowser type: HEAVYWEIGHT
08:10:02 INFO: Starting IPC...
08:10:02 INFO: Starting IPC Server...
08:10:02 INFO: Starting socket server
08:10:02 INFO: Starting socket server at port 1101...
08:10:02 INFO: Starting IPC Process...
swing示例工作正常,同样的代码在windows上运行得非常好。
答案 0 :(得分:1)
请使用JxBrowser文档page中的示例,该示例描述了如何在JavaFX应用程序中使用JxBrowser。这是一个例子:
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserCore;
import com.teamdev.jxbrowser.chromium.internal.Environment;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
/**
* Demonstrates how to embed Browser instance into JavaFX application.
*/
public class JavaFXSample extends Application {
@Override
public void init() throws Exception {
// On Mac OS X Chromium engine must be initialized in non-UI thread.
if (Environment.isMac()) {
BrowserCore.initialize();
}
}
@Override
public void start(final Stage primaryStage) {
Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
Scene scene = new Scene(new BorderPane(view), 700, 500);
primaryStage.setScene(scene);
primaryStage.show();
browser.loadURL("http://www.google.com");
}
public static void main(String[] args) {
launch(args);
}
}