import ...
class Gre  
{
JTextField text1=new JTextField(20);
JTextField text2=new JTextField(20);
Frame frame = new Frame("...") ; Gre()
{
frame.setLayout(new FlowLayout()) ;
frame.add(text1);
                  frame.add(text2);
frame.setVisible(true) ;
frame.pack() ;
frame.setResizable(false);
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//问题在这里
public class data
{
public static void main(String args[])
{
new Gre();
}
}上面这个程序运行时构造的窗口用frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 来关闭时提示出错,
请问像这样的窗口怎样关闭呢?

解决方案 »

  1.   

    Frame类的对象不能用setDefaultCloseOperation方法.那是JFrame的
    Frame frame = new Frame("...") ;----->>>JFrame frame = new JFrame("...") ;
      

  2.   

    Frame frame = new Frame("...") ;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//问题在这里
      

  3.   

    楼上的说的对,不过这个我也知道,关键问题是:
    Frame 类的怎么进行关闭!
      

  4.   

    JFrame frame = new JFrame("...") ;
    用这个时编译不会出错,可是程序运行时会出错.
    提示:
    Exception in thread "main" java.lang.Error:Do not use javax.swing.JFrame.setLayout()
    use javax.swing.JFrame.getContentPane().setLayout() instead
          at javax.swing.JFrame.createRootPaneException(Unknown Source)
          at javax.swing.JFrame.setLayout(Unknown Source)
          at Gre.<init>(data.java:18)
          at data.main(data.java:62)不懂什么意思!还请高人指点!
      

  5.   

    给楼主修改过了。运行正确。请结贴吧
    import javax.swing.*;
    import java.awt.*;
    class Gre  
    {
    JTextField text1=new JTextField(20);
    JTextField text2=new JTextField(20);
    JFrame frame = new JFrame("...") ; Gre()
    {
    frame.setLayout(new FlowLayout()) ;
    frame.add(text1);
                      frame.add(text2);

    frame.setResizable(false);
                      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//问题在这里
                      frame.setVisible(true) ;
    frame.pack() ;
    }
    }
    public class data
    {
    public static void main(String args[])
    {
    new Gre();
    }
    }
      

  6.   

    import javax.swing.*;
    import java.awt.*;
    class Gre  
    {
      JTextField text1=new JTextField(20);
      JTextField text2=new JTextField(20);
      JFrame frame = new JFrame("...") ;
      Gre()
      {
    frame.getContentPane().setLayout(new FlowLayout()) ;
    frame.getContentPane().add(text1);
    frame.getContentPane().add(text2);
    frame.getContentPane().setVisible(true) ;
    frame.pack();
    frame.setResizable(false); // 设置窗口为固定大小
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
      }
    }
    public class data
    {
       public static void main(String args[])
      {
         new Gre();
       }
    }正确的应该是这样的!谢谢上面各位的回答,有的地方得加getContentPane().
    不然虽然编译没出错,但也不能运行.我把这个贴出来,希望对以后像我这样的菜鸟有所帮助!
      

  7.   


    import java.util.Date;
    import java.awt.Frame;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    //需要实现一个WindowListener接口
    import javax.swing.JFrame;
    public class DemoFrame extends Frame implements WindowListener { /**
     * @param args
     */

    public DemoFrame(){
    //初始化
       setVisible(true);
       setSize(100,100);
       setTitle("It's Me");
       addWindowListener(this);

    }


    @Override
    public void windowOpened(WindowEvent e) {
    // TODO Auto-generated method stub
    System.out.println("opend already!");

    }
    @Override
    public void windowClosing(WindowEvent e) {
    // TODO Auto-generated method stub
    System.out.println("Closing");
    //这里就是管理窗体
    //dispose是释放
    this.dispose();
    }
    @Override
    public void windowClosed(WindowEvent e) {
    // TODO Auto-generated method stub
    System.out.println("Closed!");
    }
    @Override
    public void windowIconified(WindowEvent e) {
    // TODO Auto-generated method stub

    }
    @Override
    public void windowDeiconified(WindowEvent e) {
    // TODO Auto-generated method stub

    }
    @Override
    public void windowActivated(WindowEvent e) {
    // TODO Auto-generated method stub

    }
    @Override
    public void windowDeactivated(WindowEvent e) {
    // TODO Auto-generated method stub

    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
           System.out.println(new Date().toString());
           new DemoFrame();        
    }
        
    }