Votre question

probleme java

Tags :
  • Thread
  • Programmation
Dernière réponse : dans Programmation
24 Avril 2008 09:04:10

Bonjour

J'ai une application java qui tourne correctement , et je veux lancer cette application plusieurs fois. Donc j'ai créé une nouvelle fenêtre et j'ai généré 3 fois l'application .

  1. for(i=0; i<3;i++)
  2.  
  3. {
  4.  
  5. aaaa a1 = new aaaa(); // aaaa c'est l'ancienne appli
  6.  
  7. a1.setVisible(true);
  8.  
  9. }

L'application aaaa ce lance 3 fois mais le problème c'est que , quand j'exécute un objet ds une des fenêtres générée le résultât s'affiche toujours sur la dernière fenêtre générée .

Merci pour votre aide.

Autres pages sur : probleme java

24 Avril 2008 11:48:33

rien compris....

t'aurais un screenshot ? plus de code ?
24 Avril 2008 11:53:20

J'ai créé une classe pour les thread
  1. public class thread extends Thread implements Runnable {
  2.  
  3. public void run() {
  4.  
  5. aaaa a1 = new aaaa();
  6. a1.setVisible(true);
  7.  
  8. }
  9.  
  10. }

et j'ai lancé ces thread
  1. for(int i=0;i<2;i++){
  2. thread t1 = new thread();
  3. t1.start();}



La classe aaaa lance un thread clienttcp

  1. public class aaaa extends JFrame {
  2. .....
  3. .....
  4. void jButton4_actionPerformed(ActionEvent e) {
  5.  
  6. this.jButton2.setVisible(false);
  7. this.jButton3.setVisible(false);
  8. this.jButton4.setVisible(false);
  9.  
  10. //ici je lance le thread---------------------------------
  11. clienttcp cl= new clienttcp( );
  12. cl.start( );
  13. }


le thread clienttcp lance info


  1. public class clienttcp extends Thread implements Runnable {
  2. ......
  3. ......
  4. public void run() {
  5. .........
  6. .........
  7. info in= new info();
  8. in.inf();
  9.  
  10. }




  1. public class info {
  2. ........
  3. ......
  4. public static void inf()
  5. {
  6. ..........
  7. ............// on calcule var1..var4 et on modifie les labels dans aaaa
  8. aaaa.jLabel4.setText(var1);
  9. aaaa.jLabel6.setText(var2);
  10. aaaa.jLabel8.setText(var3);
  11. aaaa.jLabel10.setText(var4);
  12. }
  13. }


Merci
Contenus similaires
24 Avril 2008 12:11:20

exemple qui marche, sans se prendre la tête avec les thread (sachant que le mécanisme de lancement d'une jframe doit utiliser swinke invoke later, préconisation de Sun) :

  1. public class Main {
  2.  
  3. /**
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. Aaaa[] a = new Aaaa[3];
  8. for (int i = 0; i < a.length; i++) {
  9. a[i] = new Aaaa();
  10. }
  11.  
  12. }
  13.  
  14. }
24 Avril 2008 12:48:43

  1. aaaa[] a = new aaaa[3];
  2. for (int i = 0; i < a.length; i++) {
  3. a[i] = new aaaa();
  4.  
  5. a[i].setVisible(true);
  6.  
  7. }

Avec ce code j'ai le même problème : quand j'exécute un objet ds une des fenêtres crées le résultât s'affiche toujours sur la dernière fenêtre créée.

Je n'ai pas compris "" (sachant que le mécanisme de lancement d'une jframe doit utiliser swinke invoke later, préconisation de Sun)""


merci
24 Avril 2008 13:10:54

as-tu des variables static ?
24 Avril 2008 13:22:23

Bon, voici un exemple complet (sans le swing invoker) :
Classe Aaaa.java
  1. import java.awt.BorderLayout;
  2. import javax.swing.JPanel;
  3. import javax.swing.JFrame;
  4. import javax.swing.JButton;
  5. import javax.swing.JTextField;
  6.  
  7. public class Aaaa extends JFrame {
  8.  
  9. private static final long serialVersionUID = 1L;
  10. private JPanel jContentPane = null;
  11. private JButton jButton = null;
  12. private JTextField jTextField = null;
  13.  
  14. public Aaaa() {
  15. super();
  16. initialize();
  17. }
  18.  
  19. private void initialize() {
  20. this.setSize(300, 200);
  21. this.setContentPane(getJContentPane());
  22. this.setTitle("JFrame");
  23. this.setVisible(true);
  24. }
  25.  
  26. private JPanel getJContentPane() {
  27. if (jContentPane == null) {
  28. jContentPane = new JPanel();
  29. jContentPane.setLayout(new BorderLayout());
  30. jContentPane.add(getJButton(), BorderLayout.CENTER);
  31. jContentPane.add(getJTextField(), BorderLayout.SOUTH);
  32. }
  33. return jContentPane;
  34. }
  35.  
  36. private JButton getJButton() {
  37. if (jButton == null) {
  38. jButton = new JButton();
  39. jButton.setText("Pouet");
  40. jButton.addActionListener(new java.awt.event.ActionListener() {
  41. public void actionPerformed(java.awt.event.ActionEvent e) {
  42. jTextField.setText("il est :" + System.currentTimeMillis() +" ms.");
  43.  
  44. }
  45. });
  46. }
  47. return jButton;
  48. }
  49.  
  50. private JTextField getJTextField() {
  51. if (jTextField == null) {
  52. jTextField = new JTextField();
  53. }
  54. return jTextField;
  55. }
  56. }

Classe Main.java
  1. public class Main {
  2. public static void main(String[] args) {
  3. Aaaa[] a = new Aaaa[3];
  4. for (int i = 0; i < a.length; i++) {
  5. a[i] = new Aaaa();
  6. }
  7.  
  8. }
  9.  
  10. }


Aperçu :
24 Avril 2008 14:46:27

oui j'ai des variable static dans aaaa et qui sont modifiées par des threads lancer par aaaa
24 Avril 2008 15:10:13

je pense que tes static font que ça a un comportement un peu merdique.
24 Avril 2008 15:16:08

Merci bien pour votre aide.

Mais dans ce cas quel est la solution??

24 Avril 2008 15:20:16

Solution 1 : part de ce que j'ai posté.
Solution 2 : trouve toi-même d'où vient le problème, étant donné qu'on a pas tout ton code, et qu'on va pas passé non plus tout notre temps sur ton code...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS