2

我有一个主窗口,它打开另一个窗口。我想关闭这个窗口并保持主窗口打开,但它也关闭了主窗口。

我尝试了很多方法: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);

        }
    });
}
4

1 回答 1

3

一个可能的简单解决方案:使辅助窗口成为对话框,例如 JDialog,而不是 JFrame。一个应用程序通常一次只打开一个 JFrame。JDialog 可以像任何 JFrame 一样拥有复杂的 GUI,并且当它关闭时,它永远不会像 JFrame 那样关闭 JVM(正如您所发现的那样)。您还可以根据需要选择是否将对话框设为模态。

话虽如此,请理解虽然新信息可以显示为 JFrame 拥有的对话框,但也可以通过 CardLayout 通过交换 JFrame 上的组件来显示 - 这取决于您的信息类型试图展示。

于 2012-06-21T16:44:52.740 回答