Java 有没有办法在在线编译器中创建JFrame?
我使用NetBeans IDE 8.2创建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.
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");