Se connecter avec
S'enregistrer | Connectez-vous

probleme java

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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

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. }

  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

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 :
Lassé par la pub ? Créez un compte
Tom's guide dans le monde