Просто чтобы добавить к чему @camickr сказал.
Никогда не добавляйте компоненты по методу paint
. Каждый раз, когда компонент окрашен, следующий код выполняется
ImageIcon icon = new ImageIcon(s);
JLabel myLabel = new JLabel(icon);
add(myLabel);
Таким образом, вы 100% уверены, что вы будете запускать из памяти в каком-то момент, как вы добавляете новый JLabel каждый раз, когда компонент окрашен. Вы должны добавить метку при создании родительского компонента. Если вы хотите иметь анимацию в своем приложении, я предлагаю вам загрузить эти изображения и поместить их внутри List
, к которому вы можете получить доступ с помощью метода paintComponent
.
List<JLabel> images = new ArrayList<JLabel>();
// populate images when the application needs them...
// ...
@Override
public void paintComponent(Graphics g){
// get the image your want to draw
JLabel imageToDraw = images.get(imageIndex);
}
Какая макет используется? – Kowser
Макет freeDesign – user1077980
Должен ли я использовать другой тип макета? – user1077980