因为JDialog中有两个构造函数都可以和你给的参数匹配。所以有问题,改为:
JDialog jDialog=new JDialog(new Frame(),"test",true);
就可以了!

解决方案 »

  1.   

    import java.awt.*;
    import javax.swing.*;
    public class TestDialog extends JPanel{
        public TestDialog(){
         JDialog jDialog=new JDialog(new Frame(),"test",true);
        }
    public static void main(String[] args) {
    TestDialog testDialog=new TestDialog();
                      
    }
    }
      

  2.   

    多谢了,还有一个问题:
       是不是和这个new Frame() 有关联了呢?
      

  3.   

    楼上说得对,你的程序可改为:
     import java.awt.*;
    import javax.swing.*;
    public class TestDialog extends JFrame{
        public TestDialog(){
         JDialog jDialog=new JDialog(this,"test",true);
        }
    public static void main(String[] args) {
    TestDialog testDialog=new TestDialog();
    }
    }
      

  4.   

    但是我的类是继承与JPanel不是JFrame
      

  5.   

    你仔细看一下JDialog的几个构造函数就会明白了!
      

  6.   

    看了,我的类如果要是继承了JFrame就对了,但是继承JPanel就会抱错.why?
      

  7.   

    构造函数中第一项没有JPanel的情况
      

  8.   

    你看看错误提示也该知道是那里错了啊。
    The constructor javax.swing.JDialog(java.awt.Frame, java.lang.String, boolean) is ambiguousambiguous是含糊不清、模拟两可的意思。
      

  9.   

    仔细看一下JDialog的所有构造方法你会发现有这样的两个:
     public JDialog(Dialog owner,
                   String title,
                   boolean modal)

    public JDialog(Frame owner,
                   String title,
                   boolean modal)
    你这样用:
    JDialog jDialog=new JDialog(null,"test",true);
    编译器当然不知道你要用的是哪一个了不是!所以才是“ambiguous是含糊不清、模拟两可”!
    至于解决办法,楼上的前辈们已经说清楚了,自己在试一试!