初学JAVA,在做一个JDesktopPane的练习的时候发现个很奇怪的事,我把一个背景图片放入JDesktopPane里面一开始我是这样写的:desktop.add(backLabel, Integer.MIN_VALUE);
但是奇怪的是,里面的JInternalFrame最小化后的图标只能显示最后一个,我想来想去想不出原因后来,我把代码改成:desktop.add(backLabel, new Integer(Integer.MIN_VALUE));
然后就都能显示出来了,也就是这些图标一开始被遮住了,但是,我想不明白这是为什么,望高手指教

解决方案 »

  1.   

    Integer.MIN_VALUE是一个静态的int型变量,而new Integer(Integer.MIN_VALUE)则定义了一个Integer类型的对象并使用构造函数public Integer(int value)。
    楼主检查一下add方法的参数看看。
      

  2.   

    一种可能性:new Integer() 在 Java 看来是一个 Object,而 Integer.MIN_VALUE 刚只是一个基本类型,如果 add 方法是重载的话,那它当然要看参数是 Object 还是 int。JDesktopPanel 有这个方法,不过我不知道这里的 constrants 是支持哪几种类型的,或许你给了一个当前 Swing 不支持的类型的参数就会被 Swing 简单的忽略掉就当什么也没发生。虽然 Java 1.5 开始提供了 int 和 Integer 的自动转换,但还是要先熟练地搞明白 Java 1.5 之前是怎么做的,Java 1.5 又有什么不同。public void add(Component comp, Object constraints);
      

  3.   

    public void add(Component comp, Object constraints)楼上正解,是我理解错了我一开始看到public Component add(Component comp, int index),以为int也可以的,仔细一看这个是index……