Java未知异常

时间:2013-08-10 14:54:31

标签: java swing exception illegalargumentexception

任何人都可以告诉我为什么会出现以下异常

Exception in thread "main" java.lang.IllegalArgumentException adding a window to a container :
 java.awt.Container.checkNotAWindow(Unknown Source) 
 java.awt.Container.addImpl(Unknown Source)  
 java.awt.Container.add(Unknown Source)         
 javax.swing.JFrame.addImpl(Unknown Source)
 java.awt.Container.add(Unknown Source)
 clockframe.<init>(clockframe.java:14)
 clockframe.main(clockframe.java:32)

我在clockpanel.java文件中的代码如下:我是初学者,所以我不知道如何解决这个问题......

    import java.awt.*;
    import javax.swing.*;

    public class clockframe extends JFrame
    {
      public clockframe()
      {
        super("Clock");
        setLookAndFeel();
        setSize(225, 125);
        FlowLayout flo = new FlowLayout();
        setLayout(flo);
        clockpanel time = new clockpanel();
        add(time);
        setVisible(true);
      }

      private void setLookAndFeel()
      {
         try
         {
             UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
         }
         catch (Exception exc)
         {
             // ignore error
         }
      }

      public static void main(String args[])
      {
          clockframe clock = new clockframe();
      }

}

3 个答案:

答案 0 :(得分:2)

clockpanel可能扩展了JFrame等窗口。您可能希望扩展JPanel(尽管除非向新JPanel添加自定义绘制等新功能,否则不需要这样做。)

答案 1 :(得分:2)

查看JFrame documentation

IllegalArgumentException - if index is invalid 
IllegalArgumentException - if adding the container's parent to itself 
IllegalArgumentException - if adding a window to a container

clockpanel可能会继承Window,从而触发最后一个条款。

编辑:无需再猜测..只是注意到了堆栈跟踪的顶部..这就是原因。

答案 2 :(得分:0)

答案就是堆栈跟踪中的自我:

 thread "main" java.lang.IllegalArgumentException adding a window to a container 

您要将window添加到container,这是不允许的。