我正在创建一个swing应用程序(我知道rip),并希望将2个JLabel放在彼此的顶部。继承人的情景
游戏是岛屿的鸟瞰图,岛屿分为网格方块......现在每个网格方块上可以有许多1项和1种动物。我创建了两个JLabel
JLabel animal = new JLabel();
JLabel item = new JLabel();
然后使用animal.setIcon(...);
设置图片。现在这是完美的工作,但我想在动物标签上放置一个图像,这样我就可以在同一个网格方块上看到两个。
我在带有扩展JPanel的类中编写以下代码,后来我将其添加到jframe(这是gridsquare类)
if(inputItem!= null){
try{
imgItem = ImageIO.read(inputItem);
itemLabel.setIcon(new ImageIcon(imgItem.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_SMOOTH)));
this.add(itemLabel);
}catch(Exception e){
//do something
}
}
所以这很好用。我也为inputAnimal和imgAnimal变量做了类似的事情。只是想知道如何将它们添加到彼此的顶部。我尝试过按顺序添加它们,但这不起作用。
提前致谢
答案 0 :(得分:2)
现在在每个网格方格上,可以有许多1项和1种动物。我创建了两个JLabel
您可以使用OverlayLayout
。它允许您在同一面板上的Z轴上堆叠组件。
或者您可以利用组件之间的Swing父/子关系,只要父标签使用布局管理器,就可以将标签添加到另一个标签:
animal.setLayout(new BorderLayout() );
animal.add( item );
gridSquare.add( animal );