刚刚学习编写了一个有线程方面的例子 ,但是有个“构造函数位置放置错误”的提示,
现在不知道怎么办  ,请指教啊!!!

解决方案 »

  1.   

    public  ErsBlocksGame(String title) {
    super(title); //初始窗口的大小,用户可调控
    setSize(315, 392);
    Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
        
     //将游戏窗口置于屏幕中央
    setLocation((scrSize.width - getSize().width) / 2,
            (scrSize.height - getSize().height) / 2);
          
    //创建菜单
    createMenu(); Container container = getContentPane();

    // 布局的水平构件之间有6个象素的距离
    container.setLayout(new BorderLayout(6, 0));
        
     // 建立20个方块高,12个方块宽的游戏画布
    canvas = new GameCanvas(20, 12);
     
     //建立一个控制面板
    ctrlPanel = new ControlPanel(this);  //游戏画布和控制面板之间左右摆放
    container.add(canvas, BorderLayout.CENTER);
    container.add(ctrlPanel, BorderLayout.EAST);
        
    //增加窗口监听器
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent we) {
    stopGame();
    System.exit(0);
    }
    });    //增加构件的适配器,一旦构件改变大小,就调用
    //fanning()方法,自动调整方格的尺寸
    addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent ce) {
    canvas.fanning();
    }
    }); show();    //setVisiable

    // 根据窗口的大小,自动调整方格的尺寸
    canvas.fanning();

    } /**
     * 让游戏“复位”
     */
      

  2.   

    构造器的原则以前看的不多,也不是很深。具体的错误可能是创建实例并调用(感觉有点奇怪),更可能是定义的内部类;试想在一个类的构造器中加入另个类,在继承等原则上很可能会出错。一个很好的方法是将各种逻辑放入构造器外、该类内的一个init()方法中,然后再构造器中调用该方法。在构造器中写这么多逻辑,看着也累吧o_o.