我有一个主窗口,打开另一个窗口。我想关闭此窗口并保持主窗口打开,但它也会关闭主窗口。
我尝试了很多方法:setDefaultCloseOperation(),dispose(),setVisible(),但没有任何方法可以帮助我。
在主窗口中我有这段代码
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
AdaugaComanda ac = new AdaugaComanda();
ac.setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FereastraPrincipala().setVisible(true);
}});}
并在另一个窗口(当我关闭它时关闭主窗口)我有以下代码
public class AdaugaProdus extends javax.swing.JFrame {
public AdaugaProdus() {
initComponents();
initComboBoxes();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
AdaugaProdus ad = new AdaugaProdus();
ad.setVisible(true);
}
});
}
答案 0 :(得分:3)
一种可能的简单解决方案:使辅助窗口成为对话框,例如JDialog,而不是JFrame。应用程序通常一次只能打开一个JFrame。 JDialog可以像任何JFrame一样保持GUI的复杂性,当它关闭时,它永远不会像JFrame那样关闭JVM(正如你所发现的那样)。根据需要,您还可以选择是否对话模式。
说到这里,请理解虽然新信息可以显示为JFrame所拥有的对话框,但也可以通过CardLayout交换JFrame上的组件来显示它 - 它取决于哪种类型的信息你想表现出来。