comment faire pour déplacer jlabel chaque seconde?
j'ai essayer de le déplacer vers la droite(x++) toutes les secondes
j'ai essayer de le déplacer avec fil..
- comment le faire? (et peut le voir bouger à chaque seconde)
- il y a un autre moyen de le faire sans utiliser de fil?
- ce gestionnaire de mise en page que je devrais utiliser?
heres j'essaie..
public class help {
JFrame frame = new JFrame();
JLabel label = new JLabel("target");
public help() {
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(800,600);
frame.setLayout(new GridLayout());
frame.add(label);
label.setPreferredSize(new Dimension(100,100));
label.setLocation(400, 300);
frame.getContentPane().validate();
frame.repaint();
frame.setVisible(true);
mysterious();
}
void mysterious(){
////////////////////////////////
//part of edit responding David kroukamp
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try{
for (int z=0; z<10; z++){
label.setLocation((label.getLocationOnScreen().x+10), label.getLocationOnScreen().y);
Thread.sleep(1000);
}
}catch(Exception ae){
}
}
});
t.start();
//////////////////////////////
}
public static void main(String[]args){
new help();
}
}
merci beaucoup pour toute sorte d'aide
Vous devez vous connecter pour publier un commentaire.
Help
Event Dispatch Thread
Une nouvelle
Thread
est créé comme ceci:cependant, je vous suggère un Swing
Timer
, car il fonctionne surEDT
:EDIT:
Conformément à vos questions, je vous suggérons d'utiliser un
Timer
la création de thread point a été pour la connaissance générale.Le problème est que le Thread n'est pas exécuté sur EDT Fil de votre swing GUI où, comme un
Timer
n':Référence:
Voici un
Swing
exemple d'un jeu de puzzle simple.Java Swing, Shuffle Jeu
Lorsque vous appuyez sur
Pause
bouton le titre obtiendrez d'animer jusqu'à ce que vous relâchez la pause. De même, vous pouvez l'utiliser pourJLabel
. Le code Source est également en annexe.Espère que peut vous aider beaucoup.
Si vous mettez la partie de l'constructeur dans un thread, alors vous pouvez appeler
thread.sleep(1000);
(1000 millisecondes pour une 1 seconde de retard) et puis sur actualiser, qui doit se déplacer la cible sur l'écran.