我已经使用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 DISPLAY,但没有发现有用的东西。
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 DISPLAY变量以使其在联机编译器上工作?
答案 0 :(得分:1)
您可以在 headless模式中运行Java:
java -Djava.awt.headless=true ...
用例:单元测试,服务器端图形操作。
您还可以通过编程方式进行设置(必须在执行任何需要显示的AWT调用之前进行设置):
System.setProperty("java.awt.headless", "true");
请参阅:https://www.oracle.com/technetwork/articles/javase/headless-136834.html
答案 1 :(得分:1)