在使用JLayeredPane以z顺序添加Compnents时,我注意到了一些问题:
JLayeredPane lp = getLayeredPane();
JButton top = new JButton(); ...
JButton middle = new JButton(); ...
JButton bottom = new JButton(); ...
工作不好:
lp.add(top,2);
lp.add(middle,1);
lp.add(bottom,3);
效果很好:
lp.add(top,new Integer(2));
lp.add(middle,new Integer(1));
lp.add(bottom,new Integer(3));
在这里,您可以看到它的外观:http://i.imgur.com/eqH2El8.png
为什么文字常量不会转换为Integer对象,而且它无法正常工作?
答案 0 :(得分:3)
本质上,因为它继承自(Container)的类具有在其组件列表(add(Component comp, int layer)
)中的给定位置添加Component的功能,以及添加具有任何给定参数的组件(将传递给LayoutManager)(add(Component comp, Object constraint)
)。
为了调用正确的函数(和JLayeredPane的LayoutManager来接收约束),参数必须是对象Integer
而不是原始int
。
答案 1 :(得分:3)
为什么文字常量不会转换为Integer对象,而且它无法正常工作?
您需要查看add(...)
方法的API。
Container
类有一个方法接受" int"作为参数。这用于FlowLayout之类的布局,您可以在指定位置插入组件。
JLayeredPane
类有一个方法接受"整数" value来指定组件的分层。
因此,您无法依靠自动装箱将int转换为整数。