import java.awt.event.*; import java.awt.*;
class MyDialog extends Dialog implements ActionListener  //建立对话框类
{  static final int YES=1,NO=0;
   int message=-1; Button yes,no;
   MyDialog(Frame f,String s,boolean b) //构造方法
   {  super(f,s,b);
      yes=new Button("Yes"); yes.addActionListener(this);
      no=new Button("No");   no.addActionListener(this);
      setLayout(new FlowLayout());
      add(yes); add(no);
      setBounds(60,60,100,100);
      addWindowListener(new WindowAdapter()
                      {   public void windowClosing(WindowEvent e)
                           { message=-1;setVisible(false);
                           }
                      }
                   );
   }
   public void actionPerformed(ActionEvent e)
   {  if(e.getSource()==yes) 
      { message=YES;
        setVisible(false);
      }
     else if(e.getSource()==no)
      { message=NO;
        setVisible(false);
      }
   }
   public int getMessage()
   {  return message;
   }
}
class Dwindow extends Frame implements ActionListener 
{  TextArea text; Button button; MyDialog dialog;
   Dwindow(String s)
   {  super(s);
      text=new TextArea(5,22); button=new Button("打开对话框"); 
      button.addActionListener(this);
      setLayout(new FlowLayout());
      add(button); add(text); 
      dialog=new MyDialog(this,"我有模式",true);
      setBounds(60,60,300,300); setVisible(true);
      validate();
      addWindowListener(new WindowAdapter()
                      {   public void windowClosing(WindowEvent e)
                           { System.exit(0);
                           }
                      }
                   );
   }
   public void actionPerformed(ActionEvent e)
   {  if(e.getSource()==button)
        {  dialog.setVisible(true); //对话框激活状态时,堵塞下面的语句
          //对话框消失后下面的语句继续执行:
           if(dialog.getMessage()==MyDialog.YES)   //如果单击了对话框的"yes"按钮
             {  text.append("\n你单击了对话框的yes按钮");
             }
           else if(dialog.getMessage()==MyDialog.NO)   //如果单击了对话框的"no"按钮
            {  text.append("\n你单击了对话框的No按钮");
            }
        }
   }
}
public class Example8_1
{  public static void main(String args[])
   {  new Dwindow("带对话框的窗口");
   }
}我什么红色字体两句话去掉后程序不能正常运行呢???
我想让对话框一直显示     
不知道哪位高手大哥帮我解决一下这个问题

解决方案 »

  1.   

    你的Dialog要调用setModal(true);设置模态太能堵塞
      

  2.   

    在 MyDialog构造函数中加入
    setModal(true);
    setVisible(true);把setVisible(false); 改成dispose()Dwindow中

    dialog=new MyDialog(this,"我有模式",true); 
    这行放到
    dialog.setVisible(true); //对话框激活状态时,堵塞下面的语句 
    之前
    构造函数不要直接就把模态对话框创建
      

  3.   

    哥 ,我照着你给改的程序试了一下,可是要点击两次确定按钮 才能在text 里显示 内容啊???
    你知道为什么会造成这种原因吗???