Java 有没有办法在在线编译器中创建JFrame?

Java 有没有办法在在线编译器中创建JFrame?,java,swing,ide,jframe,Java,Swing,Ide,Jframe,我使用NetBeans IDE 8.2创建Java程序已经有一段时间了,而且没有遇到任何问题。我试图找到一个在线编译器,它允许我创建一个JFrame,但我通常会得到这样的错误 No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.

我使用NetBeans IDE 8.2创建Java程序已经有一段时间了,而且没有遇到任何问题。我试图找到一个在线编译器,它允许我创建一个JFrame,但我通常会得到这样的错误

No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
我尝试了几种不同的在线编译器,也研究了X11显示,但没有发现任何有用的东西

import java.awt.Canvas;
import javax.swing.JFrame;

public class Main {

    public static JFrame frame;
    public static Canvas canvas;

    public static void main(String[] args) {
        createDisplay("Display", 500, 500);
    }

    public static void createDisplay(String title, int w, int h) {
        frame = new JFrame(title);
        frame.setSize(w, h);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(true);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        canvas = new Canvas();
        canvas.setSize(w, h);
        canvas.setFocusable(false);

        frame.add(canvas);
        frame.pack();
    }
}

有没有办法设置X11显示变量以使其在联机编译器上工作?

您可以在无头模式下运行Java

java -Djava.awt.headless=true ...
用例:单元测试、服务器端图形操作

您还可以通过编程方式进行设置(必须在执行任何需要显示的AWT调用之前进行设置):

请参阅:

允许您创建JFrames



我不知道有任何在线编译器可以让您创建窗口。摆弄X11对您没有帮助。这些web服务可能是无头的。即使他们安装了X,你也无法在浏览器中看到窗口。在线编译器必须显式实现一些东西,以便在浏览器中发送和显示X窗口。运行编译器的服务器很可能是无头linux系统,因此即使在本地运行代码,它也无法显示Swing组件。但在您的情况下,运行代码的网页只返回HTML页面中的控制台内容。它不会与您“共享”服务器屏幕,在那里您可以看到JFrame(如果服务器能够做到这一点)。您不能只在本地安装JDK吗,可能是在VM中?为什么您希望使用本地NetBeans而不是远程(在线)编译器?您试图解决的具体问题是什么?虽然从技术上讲这是可行的,因为X11支持远程显示,但这真的很烦人。
System.setProperty("java.awt.headless", "true");