示例代码:public class TestDialog extends JDialog {    public TestDialog() {
    }    public TestDialog(Dialog owner, String title) {
        super(owner, title);
        init();
    }    private void init() {
        this.add(new JLabel("hahahaha"));
        this.pack();
       
    }    @Override
    protected void processWindowEvent(WindowEvent e) {
        if(e.getID() == WindowEvent.WINDOW_CLOSING) {
            System.exit(0);
        } else {
            super.processWindowEvent(e);
        }
    }    public static void main(String[] args) {
        System.out.println("start");        TestDialog d = new TestDialog(null,"dialotTest");
        d.setVisible(true);  //对话框弹出后为什么程序继续往下走呢,线程不是应该停吗
        System.out.println("……");//关闭dialog后才应该走这呀,这是为什么?请指点
    }
}

解决方案 »

  1.   

    这个地方改下protected void processWindowEvent(WindowEvent e) {
            if(e.getID() == WindowEvent.WINDOW_CLOSING) {
                dispose();        } else {
                super.processWindowEvent(e);
            }
        }
      

  2.   

    你要理解d.setVisible(true);这句话的实质,它其实只是单纯的显示JDIAOG,显示完,那么它就执行完了,转而执行下一条语句,它不同于JOpionPane.
      

  3.   

    你创建个模式的就行了
    JDialog d = new JDialog(new TestDialog(), true);
      

  4.   

    setModal(true)
    要用模态窗口