如果是通过继承JDialog来自己创建一个这样的对话框我会做,但是调用起来达不到showInputDialog()方法的效果,如
String s=JOptionPane.showInputDialog();
System.out.println(s);
只有在用户输入了文字并确定后,后面print语句才会执行,而如果调用自己写的对话框方法,不等你输入文本并确定,后面的语句就陆续执行了,输出的s为null。
如果那位高手知道改,或者有别的好方法,麻烦指点指点啊!

解决方案 »

  1.   

    你的JDialog要show出来 就是setVisible(true) 等用户在JDialog里面输入文字、点击确定之后 再把这个JDialog来个setVisible(false) 然后取的JDialog的返回值 就可以了
      

  2.   

    楼上的意思我懂,这都容易做到啊,关键是如何能像调用JOptionPane.showInputDialog()方法一样,当弹出对话框时,主程序会等待用户输入,当用户输入了文字并点确定之后,后面的代码才会继续执行。
      比如说我之前写了一个类PasswordDialog,其中有一个static方法showPasswordDialog(),这个方法除了绘出对话框外形外,还对上面的密码输入框和按钮进行监听,把用户输入值赋给一个String变量,然后把这个String作为返回值,但在调用的时候我在主程序中这么写:String str=PasswordDialog.showPasswordDialog();
    System.out.println(str);实际运行过程中不等我输入文字,println语句就执行了,输出的是String变量的初始值null
      

  3.   

    PasswordDialog.setModel(true)
    他就会等待了
    模态与非模态
      

  4.   

    另一种解决方案:
    自己定义JOptionPane中的组件
      

  5.   

    谢谢大家关心,这个问题昨天已经解决了,我采用的方法是自定义一个JOptionPane,然后再建立一个JDialog来包含该JOptionPane,其中的输入框用密码框就可以了,用起来跟JOptionPane.showInputDialog()方法一样。