我想用另一个JLabel替换JLabel,但保持它在同一位置,这可能吗?

时间:2017-01-01 16:26:23

标签: java jframe jpanel jlabel

以下是我要编辑的代码:

        game = new JPanel(); 
        ImageIcon bbb = new ImageIcon("bbb.gif");
        JLabel bbbl = new JLabel(bbb);
        ImageIcon bbbH = new ImageIcon("bbbH.gif");
        JLabel bbbHl = new JLabel(bbbH);
        game.setLayout(new GridLayout(2,2));
        game.add(bbol);
        game.add(bbgl);
        game.add(bbgrl);
        game.add(bbbl);
        if (flashed == 1)
        {
        game.remove(bbol);
        game.add(bboHl);
        }
        else
        {
        }

我希望JLabel bboHl与JLabel bbol处于相同的位置,但是在此之后还有其他JLabel,更确切地说是3个,因此解释了为什么布局为{{1 }}

我需要更改布局吗?

2 个答案:

答案 0 :(得分:2)

删除/添加组件到布局太昂贵了。 根据我的理解,您只想提交图片:

只添加一个JLabel,并在其上使用 setIcon 来更改图像。

    game = new JPanel();
    ImageIcon bbb = new ImageIcon("bbb.gif");
    ImageIcon bbbH = new ImageIcon("bbbH.gif");
    JLabel bbbl = new JLabel(bbb);

    game.setLayout(new GridLayout(2, 2));
    game.add(bbol);
    game.add(bbgl);
    game.add(bbgrl);
    game.add(bbbl);
    if (flashed == 1) {
        bbbl.setIcon(bbbH);
    } else {
        bbbl.setIcon(bbb);
    }

答案 1 :(得分:0)

如果有多个标签,例如label1label2label3等,请说明。并且您希望将它们设置在标签bbo1的位置。然后可以通过获取标签bbo1的位置并将其设置为所有其他标签来完成。

例如

 label1.setLocation(bbo1.getLocation());
 label2.setLocation(bbo1.getLocation());
 label3.setLocation(bbo1.getLocation());