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

时间:2019-05-02 13:35:10

标签: 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.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变量以使其在联机编译器上工作?

2 个答案:

答案 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)

Repl.it允许您创建JFrames
See here

enter image description here