从 JPanel class 创建对象时出现溢出错误

Creating an object from a JPanel class giving overflow error

我正在尝试从扩展 JPanel 的 class 创建一个对象,但是当我 运行 它时,我得到一个 WhosebugError。 错误信息:"Exception in thread "main" java.lang.WhosebugError"

Main.java

public class Main {

public static int width = 600, height = 400;
public static String title = "tec9meister";

public static void createWindow(){
    JFrame frame = new JFrame(title);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(width, height);
    frame.setResizable(false);

    //createPane(frame);

    PaintPanel p = new PaintPanel();
    p.setSize(100,100);
    frame.add(p);

    frame.setVisible(true);
}

private static void createPane(JFrame frame) {
    PaintPanel pane = new PaintPanel();

    pane.setSize(width, height);
    pane.setFocusable(true);
    pane.requestFocus();

    frame.add(pane);
}

public static void main(String[] args) {
    createWindow();
}
}

PaintPanel.java

public class PaintPanel extends JPanel{

public PaintPanel() {

    Target t = new Target(100, 100, 10, 10);

}
}

Target.java

public class Target extends PaintPanel {

private int x;
private int y;
private int width;
private int height;

public Target(int x, int y, int width, int height) {
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;

}

您应该始终 运行 在 Event Dispatch Thread 中使用此 Swing 程序:

EventQueue.invokeLater(new Runnable() {
    public void run() {
        try {
            createWindow();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

如果这不能解决问题,请尝试将 JPanel 添加到框架的 contentPane:

frame.getContentPane().add(panel);

如果您尝试在 PaintPanel 的构造函数中创建扩展 PaintPanel 的 class 实例,由于递归调用相同的构造函数,这将导致 WhosebugError。特别是,TestClass 不能是 Target,因为 Target 扩展了 PaintPanel。