相关疑难解决方法(0)

OSX上的JavaFX screencapture无头异常

我正在将我的旧Java应用程序从swing转换为javafx,我遇到了一个问题.

我正在使用以下代码来捕获屏幕截图:

 public ScreenCapper() {
    ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    gs = ge.getScreenDevices();

    try {
        robot = new Robot(gs[gs.length-1]);
    } catch (AWTException e) {
        LOGGER.getInstance().ERROR("Error creating screenshot robot instance!");
    }
}

public Color capture() {
    Rectangle bounds;

    mode = gs[0].getDisplayMode();
    bounds = new Rectangle(0, 0, mode.getWidth(), mode.getHeight());
    //......
}
Run Code Online (Sandbox Code Playgroud)

这在Windows下运行应用程序时工作正常.但是,在OSX下运行时会出现以下异常:

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.awt.HeadlessException
at sun.java2d.HeadlessGraphicsEnvironment.getScreenDevices(HeadlessGraphicsEnvironment.java:72)
at be.beeles_place.roggbiv.utils.ScreenCapper.<init>(ScreenCapper.java:33)
at be.beeles_place.roggbiv.modes.AverageColorMode.start(AverageColorMode.java:31) …
Run Code Online (Sandbox Code Playgroud)

java macos awt javafx-2

9
推荐指数
1
解决办法
5766
查看次数

用于服务器端图像生成的JavaFX

这可能听起来很奇怪,但我想使用JavaFX在服务器端生成我的图表图像.因为JavaFX具有很好的canvas API来执行图像转换连接和定位.

特别是我有一个spring MVC服务来生成我的图表作为图像.主要问题是如何从方便的Spring bean调用javaFX API.如果我尝试从java应用程序(不扩展javaFX Application类)运行javafx代码,我得到

java.lang.IllegalStateException: Toolkit not initialized
Run Code Online (Sandbox Code Playgroud)

您有任何建议/想法如何解决这个问题?

java spring javafx image-processing javafx-2

8
推荐指数
1
解决办法
4368
查看次数

使用JavaFx和TestFx进行无头测试

我有一个简单的JavaFx应用程序(Java 8),它使用TestFx进行单元测试.但是,运行测试时,应用程序窗口会启动并移动鼠标以执行我的测试中的任何操作.这些测试能否以应用程序不弹出的方式运行,我仍然可以在自动构建和测试运行时将鼠标用于其他事情?

unit-testing javafx javafx-8 testfx

5
推荐指数
1
解决办法
6097
查看次数

javafx快照没有显示应用程序或场景

您好我正在使用JavaFx WebView创建HTML页面的屏幕截图,它工作正常,但我想知道是否可以这样做而无需在图形Windows中启动应用程序!我的意思是没有更多的轻量级方法来获取截图然后这个:

public class WebViewSample extends Application {
    private Scene scene;

    @Override
    public void start(Stage stage) {
        // create scene
        scene = new Scene(new Browser(snapshot), 750, 500, Color.web("#666970"));

        stage.setScene(scene);
//        show stage
        stage.show();
    }
    WritableImage snapshot;
    public static void main(String[] args) {
        launch(args);
        System.err.println("launched!");
    }
}
class Browser extends Region {


    final ImageView selectedImage = new ImageView();
    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();
    private final  WritableImage snapshotImage;

    public Browser(WritableImage snapshot) {
        this.snapshotImage= snapshot;
        // process …
Run Code Online (Sandbox Code Playgroud)

java screenshot javafx embedded-browser

4
推荐指数
1
解决办法
5205
查看次数

在没有 GUI 的情况下启动 JavaFX 应用程序线程

我正在尝试开发一个应用程序,它应该能够在仅 CLI 环境以及 GUI 启用模式下运行。由于我的一些工作是由 JavaFX 线程完成的,因此我需要在不启动图形引擎的情况下启动 JavaFX 主线程,因为这会在仅 CLI 环境中崩溃。我该怎么做呢?

我已经编写了第一个主类,它将使用命令行参数决定 GUI 是否启动或者应该在 CLI 模式下运行。GUI 已经可以工作了,我只需要弄清楚如何在另一个类中运行没有 GUI 的 FX 主线程。

- - - 编辑 - - -

进一步说明:

假设我有 2 个 UI、1 个 CLI 和 1 个 GUI。代码被切分为 UI 处理和操作。UI 处理仅在 CLI 模式下解析命令行参数并在 GUI 模式下绘制 GUI。按钮事件只会从操作类中调用代码。

此问题和解答显示了我的操作段代码参考中的哪些代码

我现在尝试在 CLI 界面中重用操作代码。那里的代码被缩短了,将 create 方法视为更多代码。

如上所述,CLI 模式是为无法启动图形环境的环境而设计的。尝试从 Application 继承并实现该start (Stage s)方法将导致 UnsupportedOperationException : unable to open DISPLAY即使该阶段在启动方法中被忽略

---第二次编辑---

采用[此处] 1中描述的代码考虑我createKey(length)不想从按钮 调用,而是从仅命令行的第二个UI调用

   private static void progressBar(Task …
Run Code Online (Sandbox Code Playgroud)

java multithreading javafx

1
推荐指数
1
解决办法
3135
查看次数