如何在打开另一个JFrame时关闭JFrame? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在打开另一个JFrame时关闭JFrame? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个框架(main)。有两个按钮:项目和销售。

当我点击按钮Items它打开一个框架(Items),我想,当我点击按钮Sale,它应该关闭Items并打开Sale

这是Items框架:

public class Items extends JFrame {

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Items frame = new Items();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
}

更新: - 这是我的销售课程

public class Sale extends JFrame {
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Sale frame = new Sale();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
}
答案

只需使用dispose()方法关闭上一个Item JFrame即可。

salesframe.setVisible(true);
itemframe.dispose();

在您的情况下,我认为您还应该向按钮添加ActionListener。

jButton1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
       frameToClose.dispose();
    }
});
另一答案

你应该.dispose();按钮的ActionListener框架,因为你在课堂上扩展JFrame它意味着你.dispose();实例本身。像这样的东西:

public class Main extends JFrame {
    public Main() {

        Sale sale = new Sale();
        Items item = new Items();

        JButton btnSale = new JButton("Sale");
        getContentPane().add(btnSale, BorderLayout.WEST);

        JButton btnItems = new JButton("Items");
        getContentPane().add(btnItems, BorderLayout.CENTER);
        btnSale.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                sale.setVisible(true);
                if(item.isVisible()) {
                    item.dispose();
                }

            }
        });

        btnItems.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                item.setVisible(true);
                if(sale.isVisible()) {
                    sale.dispose();
                }

            }
        });
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Main frame = new Main();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

}

以上是关于如何在打开另一个JFrame时关闭JFrame? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

一个 JFrame 打开另一个

JFrame关闭方法的问题

单击JFrame上的退出按钮需要关闭JFrame

如何将值从一个JFrame传递到另一个JFrame?

如何让 JFrame 没有任务栏按钮?

JFrame 使应用程序在关闭后仍保持运行