2017-01-01 1 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 однако есть и другие JLabels после этого, 3 больше, чтобы быть точным, поэтому объяснение, почему макет (GridLayout(2,2))

Должен ли я изменить макет?

ответ

2

Извлечение/добавление компонентов в макет слишком дорого. Из того, что я понимаю, вы просто хотите Toogle изображение:

Добавить только один 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

Пусть говорят, что если есть несколько меток, как label1, label2, label3 и т.д. И вы хотите, чтобы установить их на позицию метки bbo1. Затем это можно сделать, установив местоположение метки bbo1 и установив его на все остальные метки.

Для примера

label1.setLocation(bbo1.getLocation()); 
label2.setLocation(bbo1.getLocation()); 
label3.setLocation(bbo1.getLocation()); 
Смежные вопросы