回 帖 发 新 帖 刷新版面

主题:[讨论]求助关于JFrame 关闭问题!谢谢高手!

路过的java高手,麻烦您停下脚步,帮帮我,这个问题怎么解决.谢谢!

问题:
   当我点事件按纽新建Frame,接着如何实现 点当前frame内的按纽来关闭当前 frame,最后 跳转到 打开frame之前的状态.  并且不是通过 setVisible(true)! 这样实际就是把当前的frame给毁灭掉,而不是隐藏!
    我试过一种方法:setDefaultCloseOperation(); 这方法跟 System.exe(0);一样,把全部给关了,不是我要的效果!
    
    万分感谢!

    

回复列表 (共5个回复)

沙发

//不知道你是不是这个意思

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Demo extends JFrame implements  ActionListener
{
    private JButton but_open = new JButton("打开");
    private AnotherFrame frame = new AnotherFrame();
    public Demo()
    {
        this.getContentPane().add(but_open,"North");
        but_open.addActionListener(this);
        this.setSize(600,400);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    
    public static void main (String[] args) 
    {
        new Demo();    
    }
    
    public void actionPerformed(ActionEvent e)
    {
        frame.setVisible(true);
    }
}

class AnotherFrame extends  JFrame implements ActionListener
{
    private JButton but_close = new JButton("关闭");
    public AnotherFrame()
    {
        this.getContentPane().add(but_close,"South");
        but_close.addActionListener(this);
        this.setSize(300,200);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    
    public void actionPerformed(ActionEvent e)
    {
        this.setVisible(false);
    }
}

板凳

happyboy:我测试了下,确实是我需要的效果.但是没有达到我心理的理想效果!
因为:我打开进程时发现.  当点打开,  然后关闭时如果不是用关闭按纽.内存几乎没什么变化. 但是点了关闭,却有很大的浮动! 所以,你用的  setvisible应该只是隐藏了frame,而不是真正的把这关闭的frame在内存中删除!   我所理想的效果就是希望 JFrame.DISPOSE_ON_CLOSE 能够用在 actionPerformed 方法内,可惜没成功,跟没写一样!55555!  意思就是:当点关闭按纽 和 右上角 的默认关闭 一样效果!

3 楼



在这里有没软件高手的,有的话加入群58773512,一起深度探索软件界的一切奥妙..........[em2]

4 楼

那在CPU上可以减少内存的占有资源的关闭 ?
不是网页的关闭??

5 楼

试试  dispose()

我来回复

您尚未登录,请登录后再回复。点此登录或注册