2017-01-01 52 views
0

这里是我想要编辑的代码:我想用另一个JLabel替换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个准确的说,因此解释了为什么布局是(GridLayout(2,2))

我需要更改布局吗?

回答

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); 
    } 
+0

非常感谢! – WillA

0

让我们说,如果有多个标签就像label1label2label3等,并要设置它们的标签bbo1的位置。然后可以通过获取标签bbo1的位置并将其设置为所有其他标签来完成。

对于实例

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