添加叠加的JLabel

时间:2017-05-09 11:56:13

标签: java swing overlay jlabel

我正在创建一个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变量做了类似的事情。只是想知道如何将它们添加到彼此的顶部。我尝试过按顺序添加它们,但这不起作用。

提前致谢

1 个答案:

答案 0 :(得分:2)

  

现在在每个网格方格上,可以有许多1项和1种动物。我创建了两个JLabel

您可以使用OverlayLayout。它允许您在同一面板上的Z轴上堆叠组件。

或者您可以利用组件之间的Swing父/子关系,只要父标签使用布局管理器,就可以将标签添加到另一个标签:

animal.setLayout(new BorderLayout() );
animal.add( item );
gridSquare.add( animal );