Eclipse无法在运行时正确启动我的程序

时间:2014-07-20 23:15:39

标签: java swing illegalargumentexception

我正在创建一个2d游戏,作为youtube教程系列的一部分。我刚开始并将它全部复制到T.目前只有一个类,我想知道如何设置eclipse来正确运行它。

我在Windows 7 x64上运行

package com.zephyrwolf.main;

import java.awt.Dimension;

import javax.swing.JFrame;

public class Game extends JFrame implements Runnable{

/**
 * 
 */
private static final long serialVersionUID = 0L;

public static final int WIDTH = 360, HEIGHT = 240, SCALE = 2;
public static boolean running = false;
public Thread gameThread;

public synchronized void start() {
    if (running) return;
    running = true;
    gameThread = new Thread(this);
    gameThread.start();
}

public synchronized void stop() {
    if (!running) return;
    running = false;
    try {
        gameThread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

public void run() {

}

public static void main(String[] args) {
    Game game = new Game();
    game.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
    game.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
    game.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));

    JFrame frame = new JFrame("Tile RPG");
    frame.setSize(WIDTH * SCALE,  HEIGHT * SCALE);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.add(game);
    frame.setVisible(true);
}
}

这是我尝试让程序运行。

Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at javax.swing.JFrame.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at com.zephyrwolf.main.Game.main(Game.java:49)

如果您需要任何新信息,请发邮件给我。

1 个答案:

答案 0 :(得分:3)

您的Game类扩展JFrame,然后您尝试单独创建JFrame并将游戏实例添加到其中。因此错误:

adding a window to a container

(你不能在另一个窗口内放置一个窗口)。

尝试直接在setSize上执行所有setVisiblegame内容。