在弹出新窗口的代码下加入frame.dispose();

解决方案 »

  1.   

    main函数package testSeparate;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import testSeparate.*;class testmain
    {
    public static void main(String args[])
    {
    mainFrame frm=new mainFrame();

    frm.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent evt)
    {
    System.exit(0);
    }
    });

    Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize=frm.getSize();
    if(frameSize.width>screenSize.width)
       frameSize.width=screenSize.width;
    if(frameSize.height>screenSize.height)
       frameSize.height=screenSize.height;
    frm.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);   
    }
    }主窗口
    package testSeparate;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import testSeparate.testmain;
    import testSeparate.*;public class mainFrame extends JFrame
    {
    public mainFrame()
    {
    init();
    }

    public void init()
    {
    Container contain=this.getContentPane();
    contain.setLayout(new BorderLayout());
    contain.add(txt,BorderLayout.CENTER);
    btn.addActionListener(new myWindowExitListener());
    contain.add(btn,BorderLayout.SOUTH);
    txt.setText("sssssssss");
    this.setSize(400,400);
    this.setVisible(true);
    }

    class myWindowExitListener implements ActionListener
    {
    public void actionPerformed(ActionEvent evt)
    {
    testmainother f=new testmainother();

    }
    }
    弹出窗口
    package testSeparate;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import testSeparate.mainFrame;public class testmainother extends JFrame
    {
    public testmainother()
    {
    init();
    }

    public void init()
    {
    Container contain=this.getContentPane();
    contain.setLayout(new BorderLayout());
    contain.add(txt,BorderLayout.CENTER);
    btn.addActionListener(new myWindowExitListener());
    contain.add(btn,BorderLayout.SOUTH);
    txt.setText("sssssssss");
    this.setSize(400,400);
    this.setVisible(true);
    }

    class myWindowExitListener implements ActionListener
    {
    public void actionPerformed(ActionEvent evt)
    {
    System.exit(0);
    }
    }

    JTextArea  txt=new JTextArea(20,40);
    JButton btn=new JButton("Open");
    }
      

  2.   

    在ok按钮触发时间下加frame.dispose();就可以了,这只是关闭窗口,如果要退出这个程序就写System.exit(0).
      

  3.   

    恩,楼上几位说的对,如果有图形界面一定要用System.exit(0)来退出的,用return没用
      

  4.   

    我的和fruitking(坚持我的选择) 一样,都是教材上现成的例子,只不过举一反三而以。
      main函数package testSeparate;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import testSeparate.*;class testmain
    {
    public static void main(String args[])
    {
    mainFrame frm=new mainFrame();

    frm.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent evt)
    {
    System.exit(0);
    }
    });

    Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize=frm.getSize();
    if(frameSize.width>screenSize.width)
       frameSize.width=screenSize.width;
    if(frameSize.height>screenSize.height)
       frameSize.height=screenSize.height;
    frm.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);   
    }
    }主窗口
    package testSeparate;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import testSeparate.testmain;
    import testSeparate.*;public class mainFrame extends JFrame
    {
    public mainFrame()
    {
    init();
    }

    public void init()
    {
    Container contain=this.getContentPane();
    contain.setLayout(new BorderLayout());
    contain.add(txt,BorderLayout.CENTER);
    btn.addActionListener(new myWindowExitListener());
    contain.add(btn,BorderLayout.SOUTH);
    txt.setText("sssssssss");
    this.setSize(400,400);
    this.setVisible(true);
    }

    class myWindowExitListener implements ActionListener
    {
    public void actionPerformed(ActionEvent evt)
    {
    testmainother f=new testmainother();

    }
    }
    弹出窗口
    package testSeparate;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import testSeparate.mainFrame;public class testmainother extends JFrame
    {
    public testmainother()
    {
    init();
    }

    public void init()
    {
    Container contain=this.getContentPane();
    contain.setLayout(new BorderLayout());
    contain.add(txt,BorderLayout.CENTER);
    btn.addActionListener(new myWindowExitListener());
    contain.add(btn,BorderLayout.SOUTH);
    txt.setText("sssssssss");
    this.setSize(400,400);
    this.setVisible(true);
    }

    class myWindowExitListener implements ActionListener
    {
    public void actionPerformed(ActionEvent evt)
    {
    System.exit(0);
    }
    }

    JTextArea  txt=new JTextArea(20,40);
    JButton btn=new JButton("Open");
    }
      

  5.   

    个人同意eshow(深山含笑)的看法
      

  6.   

    好像上面的两个例子都不符合要求艾。frame.dispose没有找到。
      

  7.   

    笨方法,就用setVisible(false)它就不见了。
      

  8.   

    dispose()方法没找到??
    不会吧
    再看看
      

  9.   

    我支持用setVisible(false)的方法,因为我刚做了一个程序就是用的这个方法。既简单又好用,而且好想。呵呵。
      

  10.   

    不见了不代表关闭了啊!! 个人同意用dispose() 
      

  11.   

    如果你以后还要用那个窗体,把它设为不可见就行了,setVisible(false)
    否则用dispose() 
      

  12.   

    To:gaosikai()
    frame.dispose没有找到。那你看一下java.awt.Window类,它有dispose()方法。
      

  13.   

    点ok弹出新窗体后开始计时,到了一定的时间在新窗体内执行
    this.dispose();
      

  14.   

    fruitking(坚持我的选择) 的好使可用..给他加分吧..
      

  15.   

    在按钮事件的最下面加上this.dispose()就OK。
      

  16.   

    顺路问一个问题,我把上边3段程序,分别新建了3个java Files文件名分别叫testmain,mainFrame和testmainother,由于是分开写的,所以编译的时候有问题,例如在testmain中mainFrame没有定义,编译就通不过,我想问一下如何把这3个文件关联在一起??
    好像把他们压缩成jar文件就可以,不过操作步骤呢?我在jdk目录下查找jre文件夹,没有发现什么工具,请高手指点一下,谢谢了。新手上路,请多关照!
      

  17.   

    在同一个包里的类都是彼此可见的,
    把所有的类都设为public,不同包import一下就行了。
    直接在就行了
      

  18.   

    我把每个类都设成了public但是还是不行啊,我编译第一个文件(用的是JC)他会报错说找不到mainFrame。
      

  19.   

    最直接的方法你把三个文件放在同一个package下。