回 帖 发 新 帖 刷新版面

主题:[讨论]java多窗口编程的问题

我在多窗口编程时,当由一个窗口弹出另一个后,在点击关闭按钮时调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
这样会把两个窗口都关掉,我想只关掉一个,即,按哪个关闭按钮就关掉相应的Frame,
请问,应该怎么做呢?

回复列表 (共7个回复)

沙发

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JButton;

public class FrameDemo extends JFrame implements ActionListener
{
    private JButton but = new JButton("OPEN");
    public FrameDemo()
    {
        this.getContentPane().add(but,"North");
        but.addActionListener(this);
        this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        this.setSize(400,300);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
    
    public static void main(String[] args)
    {
        new FrameDemo();
    }

    public void actionPerformed(ActionEvent e)
    {
        new AnotherFrame().setVisible(true);
    }
}

class AnotherFrame extends JFrame
{
    public AnotherFrame()
    {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        this.setLocationRelativeTo(null);
    }
}

板凳

什么多窗口编程?是多个Frame还是用的JInternalFrame?

3 楼


楼主代码没问题,我用netbean 测试没有你说的问题。
不过关闭窗口后不能自动结束线程。
如果把第一个界面的HIDE_ON_CLOSE 改成 EXIT_ON_CLOSE 可以解决。
但是如果关闭主窗口,因为关闭了线程所以两个窗口同时关闭。
如果只关闭新窗口,则主窗口不会关闭。

4 楼

搂住帖子没有问题,我用NetBean测试没发生同时关闭的情况,
问题是关闭窗口之后,线程不能自动关闭。

把主窗口的关闭改成 JFrame.EXIT_ON_CLOSE
新窗口不变,这样关闭新窗口主窗口不关闭,如果关闭主窗口则新窗口也关闭,线程结束。

5 楼

这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:六#二#八#七#八#零#四#三。另外,这个群里可以接项目。

6 楼

public void actionPerformed(ActionEvent e)
    {
        new AnotherFrame().setVisible(true);
    }
写这段代码有什么用啊,请问一下一楼的高手?

7 楼

把两个窗口写在两各类中,而且使用嵌套类。即可

我来回复

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