0

谁能告诉我为什么我得到以下例外

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();
      }

}
4

3 回答 3

2

clockpanel可能会扩展一个窗口,例如JFrame. 您可能打算改为扩展JPanel(尽管这样做不是必需的,除非将自定义绘画等新功能添加到 new JPanel)。

于 2013-08-10T15:07:53.593 回答
2

查看JFrame 文档

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

看起来很可能clockpanel继承自Window因此触发最后一个子句。

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

于 2013-08-10T15:08:16.170 回答
0

答案就在堆栈跟踪中:

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

您正在添加windowcontainer,这是不允许的。

于 2013-08-10T15:17:28.533 回答