如何在打开另一个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? [重复]的主要内容,如果未能解决你的问题,请参考以下文章