Dans mon java swing application j'ai un Jframe et Jlabel pour afficher l'heure actuelle. ici j'utilise un fil pour l'affichage de l'heure dans jlablel qui est ajouté à la frame.mon doute est que lorsque je dispose de la jframe ce qui va arriver au thread si elle est en cours d'exécution ou arrêté.problème java swing thread
Répondre
Si vous n'avez pas marqué votre thread en tant que démon en appelant yourThread.setDaemon(true)
, il continuera à fonctionner même si le thread principal de votre application est terminé. Rappelez-vous que vous devez appeler setDaemon
avant de démarrer le fil.
Référez-moi à answer pour une question précédente pour plus de détails.
La manière correcte dans votre cas, je crois, serait que vous mainteniez un drapeau 'stop' qui est regardé par votre thread minuteur. Le fil de la minuterie doit quitter en lisant ce drapeau comme 'faux'. Vous pouvez ajouter un WindowListener à votre JFrame et la fenêtre événement ensemble fermé le drapeau « stop » à vrai
exemple de code Heres pour ce que je veux dire:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class JFrameTest {
public static void main(String[] args) {
final Timer t = new Timer();
t.start();
JFrame jf = new JFrame("GOPI");
jf.setVisible(true);
jf.setSize(100, 100);
jf.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
t.stopTimer();
}
});
System.out.println("JFrameTest.main() DONE");
}
}
class Timer extends Thread {
boolean stop = false;
@Override
public void run() {
for (int i = 0; i < 50; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (stop)
break;
System.out.println("Counting :" + i);
}
System.out.println("Timer exit");
}
public void stopTimer() {
stop = true;
}
}
Votre thread continuera à fonctionner.
Vous devez soit faire comme suggéré par Gopi ou vous pouvez utiliser System.exit(0)
en étroite opération de votre JFrame.
REMARQUE: Je suppose ici que votre application doit se terminer si ce cadre est fermé.
non je ne peux pas appeler le system.exit (0) il fermera mon application. J'ai besoin de disposer de la jframe et montrer une nouvelle jframe en une fraction de seconde. – Lalchand
- 1. Java Swing long Thread execution
- 2. Java Swing Problème
- 3. Problème java swing clipping
- 4. Java Swing GUI - Problème
- 5. Java Swing - Problème dans JSpinner
- 6. problème avec GridBagLayout en Java Swing
- 7. Java/Swing: Problème avec l'écouteur de touche
- 8. Fenêtre Swing Java corrompue
- 9. Java Swing Threading
- 10. Java Multi problème de synchronisation de thread?
- 11. Problème de thread Java NIO avec SocketChannel.write()
- 12. Problème d'application Swing
- 13. Java swing jLayeredPane
- 14. Java Swing JMenu Mnémonique
- 15. Java swing JComponent "taille"
- 16. Java Swing Font Chooser
- 17. rotation JLabel java swing
- 18. Boutons Java swing hold
- 19. Java Swing Table taille
- 20. GoogleEarth dans Java Swing
- 21. Java Swing JToolBar
- 22. Opérations sur Java Swing
- 23. java swing redimensionne
- 24. Java Swing pour l'émulation
- 25. Java Swing: Différent TableCellRenderers
- 26. Java Swing Visual Editor
- 27. Java Swing arrangement JInternalFrames
- 28. Propriétés Java Swing (addPropertyChangeListener)
- 29. Java Swing repeindre()
- 30. Java Swing JButton
et quel est le problème réel? – Roman
Un thread lâche est un problème. – kgiannakakis
Problème de mémoire @Roman. – Lalchand