【问题标题】:Adding Overlayed JLabels添加叠加的 JLabel
【发布时间】:2017-05-09 11:56:13
【问题描述】:

我正在创建一个摇摆应用程序(我知道 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 变量做了一些非常相似的事情。只是想知道我如何才能将它们添加到彼此之上。我试过简单地按顺序添加它们,但这不起作用。

提前致谢

【问题讨论】:

  • 您不需要两个标签。你需要一个OverlayIcon

标签: java swing overlay jlabel


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-30
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    相关资源
    最近更新 更多