2016-09-30 3 views
0

Я пытаюсь заставить человека ходить, но по какой-то причине, когда я переключаю значки, метка возвращается в свое местоположение по умолчанию для разделяемой секунды, а затем обновляется до того места, где я устанавливал границы. Чрезвычайно раздражает, любая помощь очень ценится. Спасибо.jLabel Icon Animation Glictching

public class Main extends JFrame implements ActionListener{ 

JLabel x = new JLabel(""); 

ImageIcon player1 = new ImageIcon("C:\\Users\\Kyle\\Documents\\NetBeansProjects\\Testing52\\src\\testing52\\Player1.png"); 
ImageIcon player2 = new ImageIcon("C:\\Users\\Kyle\\Documents\\NetBeansProjects\\Testing52\\src\\testing52\\Player2.png"); 

static int count; 

Timer timer; 

Main(){ 

    timer = new Timer(100,this); 

    setVisible(true); 
    setSize(500,500); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setFocusable(false); 
    add(x); 

    timer.start(); 
} 

public static void main(String [] args){ 

    Main main = new Main();  
} 

@Override 
public void actionPerformed(ActionEvent e) { 

    count += 1; 

    if(count == 10){ 
     x.setIcon(player1); 
    } 
    if(count == 20){ 
     x.setIcon(player2); 
    } 

    if(count == 30){   
     count = 0; 
    } 

    x.setBounds(0, 0,60,60); 
} 
} 

ответ

0

setBounds(...) вызов работает только тогда, когда раскладка используется null. Сказав это, не используют нулевые макеты (см. this), но вместо этого используют правильные менеджеры макетов и позиционирование компонентов.

+0

Даже когда макет установлен в нуль, он все равно делает то же самое –

+0

@KyleLongrich Как вы установили макет в нуль? – immibis

+0

внутри Main() {} перед тем, как добавить его в рамку. "X.setLayout (нуль);" –