是不是你设置它们为模态对话框了(就是说必需关闭最后打开的对话框才能关闭倒数二打开的对话框)。
要不我直接建四个JDialog,然后一个调用一个,可以成功调用Dialog4

解决方案 »

  1.   

    没有问题,可能是你程序中作了什么操作导致的。
    贴Dialog3代码上来。
      

  2.   

    我在jbuilder 6中不知用一个applet生成一个frame后产生一个dialog1,再产生一个dialog2,从中再产生一个dialog3到这地方就不行了。以下是fame1.dialog1,dialog2,dialog3,代码。
    package junk;import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class Frame1 extends JFrame {
      JPanel jPanel1 = new JPanel();
      JButton jButton1 = new JButton();  public Frame1() {
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      private void jbInit() throws Exception {
        jPanel1.setLayout(null);
        jButton1.setBounds(new Rectangle(103, 76, 116, 41));
        jButton1.setText("this is frame");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jButton1_actionPerformed(e);
          }
        });
        this.getContentPane().add(jPanel1,  BorderLayout.CENTER);
        jPanel1.add(jButton1, null);
      }  void jButton1_actionPerformed(ActionEvent e) {
    Dialog1 d1=new Dialog1(this,"hell",true);
    d1.show() ;
      }
    }
    /***************
    dialog1
    package junk;import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class Dialog1 extends JDialog {
      JPanel panel1 = new JPanel();
      JButton jButton1 = new JButton();  public Dialog1(Frame frame, String title, boolean modal) {
        super(frame, title, modal);
        try {
          jbInit();
          pack();
        }
        catch(Exception ex) {
          ex.printStackTrace();
        }
      }  public Dialog1() {
        this(null, "", false);
      }
      void jbInit() throws Exception {
        panel1.setLayout(null);
        jButton1.setBounds(new Rectangle(53, 53, 206, 46));
        jButton1.setText("this is dialog1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jButton1_actionPerformed(e);
          }
        });
        getContentPane().add(panel1,  BorderLayout.CENTER);
        panel1.add(jButton1, null);
      }  void jButton1_actionPerformed(ActionEvent e) {
    Dialog2 d2=new Dialog2();
    d2.show() ;
      }
    }
    /*****
    package junk;import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class Dialog2 extends JDialog {
      JPanel panel1 = new JPanel();
      JButton jButton1 = new JButton();  public Dialog2(Frame frame, String title, boolean modal) {
        super(frame, title, modal);
        try {
          jbInit();
          pack();
        }
        catch(Exception ex) {
          ex.printStackTrace();
        }
      }  public Dialog2() {
        this(null, "", false);
      }
      void jbInit() throws Exception {
        panel1.setLayout(null);
        jButton1.setBounds(new Rectangle(78, 65, 119, 32));
        jButton1.setText("this is dialog2");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jButton1_actionPerformed(e);
          }
        });
        getContentPane().add(panel1,  BorderLayout.CENTER);
        panel1.add(jButton1, null);
      }  void jButton1_actionPerformed(ActionEvent e) {
    Dialog3 d3=new Dialog3();
    d3.show() ;
      }
    }
    /*****
    package junk;import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class Dialog3 extends JDialog {
      JPanel panel1 = new JPanel();
      JButton jButton1 = new JButton();  public Dialog3(Frame frame, String title, boolean modal) {
        super(frame, title, modal);
        try {
          jbInit();
          pack();
        }
        catch(Exception ex) {
          ex.printStackTrace();
        }
      }  public Dialog3() {
        this(null, "", false);
      }
      void jbInit() throws Exception {
        panel1.setLayout(null);
        jButton1.setBounds(new Rectangle(89, 52, 140, 43));
        jButton1.setText("this is dialog3");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            jButton1_actionPerformed(e);
          }
        });
        getContentPane().add(panel1,  BorderLayout.CENTER);
        panel1.add(jButton1, null);
      }  void jButton1_actionPerformed(ActionEvent e) {
    Dialog4 d4=new Dialog4();
    d4.show() ;
      }
    }