1:程序中使用了外部非静态变量.就是静态方法中用到的外部变量必须也是静态的.
2:程序运行结束就会自动返回到dos提示符下.

解决方案 »

  1.   

    t未被实例化,应该是Test t = new Test();
      

  2.   

    t未被实例化,应该是Test t = new Test();
      

  3.   

    1.bhr能说具体一点吗?到底是用了哪个非静态变量,是new Lis()?
    2,就是程序结束了也没返回dos提示符下!我之所以加WindowListener是期望添加事件响应,在windowClosing时关闭窗口.但是关闭了窗口,还是没能返回啊!
      

  4.   

    sorry,是我打错了,应该是Test t=new Test();
      

  5.   

    //Test.javaimport java.awt.*;
    import java.awt.event.*;public class Test extends Frame
    {
    public static void main(String[] args)
    {
    Test t=new Test();
    t.setTitle("Test!");
    t.setSize(200,200);
    t.addWindowListener(new Lis());
    }
    class Lis extends WindowAdapter
    {
    public void windowClosing(WindowEvent e)
    {
    dispose();
    }
    }
    }
    这时源码!
      

  6.   

    程序有2处错误.
    1:将Lis类改为静态的,或者干脆将new Lis()处的调用改为匿名类调用
    .addWindowListener(new WindowAdapter()
                            {
                            public void windowClosing(WindowEvent e)
                            {                        }
                            }
                            );
    2:dispose()方法此处不能调用,因为它相当于this.dispose(),而this指类Lis,而它没有集成Frame类,所以没有dispose()方法.可以改为System.exit(0);
      

  7.   

    谢谢追风~!
    能告诉我为什么必须将Lis类改为静态的,或将new Lis()改为匿名类调用?