我的方法中有一个“非法组件位置”,您知道我为什么要拥有它吗?
我执行此方法来放置ImageIcon,还设置了ImageIcon的Z轴。
public void Placer(ImageIcon a, int x, int y, int z) {
JPanel panel = (JPanel) this.getContentPane();
JLayeredPane lp = getLayeredPane();
lp.setPreferredSize(new Dimension(100,100));
panel.setLayout(null);
JLabel image = new JLabel(a);
panel.add(image);
Dimension size = image.getPreferredSize();
image.setBounds(x, y, size.width, size.height);
lp.add(panel, new Integer(z));
}
当我打电话
for (int y = 0,y1=0; y < 910; y += 35,y1++) {
for (int x = 0,x1=0; x < 910; x += 35,x1++) {
Placer(this.affichageBatiment[x1][y1], x, y, -5);
Placer(this.affichageAgentEquipe1[x1][y1], x, y,-3);
Placer(this.affichageAgentEquipe2[x1][y1],x,y,-2);
}
}
PS:所有2d数组都是ImageIcon的数组 而且我有这个错误
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Container.java:1098)
at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:231)
at java.awt.Container.add(Container.java:975)
at Fenetre.Placer(Fenetre.java:69)
at Fenetre.afficherTout(Fenetre.java:146)
at Fenetre.<init>(Fenetre.java:54)
at Tournoi.LancerTournoi(Tournoi.java:34)
at Main.main(Main.java:14)
答案 0 :(得分:0)
您要在Placer
方法的最后一行中调用的方法是Component.add(Component comp, int index);
,其中index
为:
index-插入组件的位置,或附加-1 组件到底
因此,使用lp.add(panel, -1);
,您就可以摆脱异常。
我不确定,为什么要使用包装对象Integer
来调用它,但是请注意实际上是在调用 Component.add(Component comp, Object constraints);
,因为Integer
是{ {1}}。在这里,该对象应该是
constraints-一个为此表达布局约束的对象 组件
并且由于Object
不是有效的布局约束对象,因此会抛出Integer
。