Tom's Guide > Forum > Programmation > [java] generer instance vs variable static

[java] generer instance vs variable static

Forum Programmation : [java] generer instance vs variable static

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Salut
J'ai créé 3 frame ( Frame , Frame1 , Frame2 ).

 

Frame génère Frame1 n fois.

 

Frame1 génère Frame2.

 

Sur Frame2 on peut cliquer sur bouton3 pour faire disparaitre bonton2 du Frame1.

 

Mais le problème c'est que le bouton2 disparait seulement sur la dernière Frame1 générée.

 

Je veux que, quand j'appuie sur bouton3 du Frame2 le bouton2 du Frame1 (<--- qui a généré ce Frame2) disparait.

 

Frame

 
Code :
  1. package index;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. public class Frame extends JFrame {
  6.   JPanel contentPane;
  7.   JButton jButton1 = new JButton();
  8. ///////////////////////////////////////////////////////////////////////////////////////////////
  9. private Frame1[] appli = new Frame1[2];
  10. ///////////////////////////////////////////////////////////////////////////////////////////////
  11.   //Construct the frame
  12.   public Frame() {
  13.     enableEvents(AWTEvent.WINDOW_EVENT_MASK);
  14.     try {
  15.       jbInit();
  16.     }
  17.     catch(Exception e) {
  18.       e.printStackTrace();
  19.     }
  20.   }
  21.   //Component initialization
  22.   private void jbInit() throws Exception  {
  23.     contentPane = (JPanel) this.getContentPane();
  24.     jButton1.setBounds(new Rectangle(137, 57, 182, 32));
  25.     jButton1.setText("jButton1" );
  26.     jButton1.addActionListener(new Frame_jButton1_actionAdapter(this));
  27.     contentPane.setLayout(null);
  28.     this.setSize(new Dimension(400, 300));
  29.     this.setTitle("index" );
  30.     contentPane.setDebugGraphicsOptions(0);
  31.     contentPane.add(jButton1, null);
  32.   }
  33.   //Overridden so we can exit when window is closed
  34.   protected void processWindowEvent(WindowEvent e) {
  35.     super.processWindowEvent(e);
  36.     if (e.getID() == WindowEvent.WINDOW_CLOSING) {
  37.       System.exit(0);
  38.     }
  39.   }
  40.   void jButton1_actionPerformed(ActionEvent e) {
  41. ///////////////////////////////////////////////////////////////////////////////////////////////
  42.     for (int i = 0; i < 2; i++) {
  43.         appli[i] = new Frame1();
  44.           appli[i].setVisible(true);
  45.     }
  46. ///////////////////////////////////////////////////////////////////////////////////////////////
  47.   }
  48. }
  49. class Frame_jButton1_actionAdapter implements java.awt.event.ActionListener {
  50.   Frame adaptee;
  51.   Frame_jButton1_actionAdapter(Frame adaptee) {
  52.     this.adaptee = adaptee;
  53.   }
  54.   public void actionPerformed(ActionEvent e) {
  55.     adaptee.jButton1_actionPerformed(e);
  56.   }
  57. }
 


Frame1

 
Code :
  1. package index;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. public class Frame1 extends JFrame {
  6.   JButton jButton1 = new JButton();
  7. ///////////////////////////////////////////////////////////////////////////////////////////////
  8. static JButton jButton2 ;
  9. ///////////////////////////////////////////////////////////////////////////////////////////////
  10.   public Frame1() {
  11.     try {
  12.       jbInit();
  13.     }
  14.     catch(Exception e) {
  15.       e.printStackTrace();
  16.     }
  17.   }
  18.   private void jbInit() throws Exception {
  19. jButton2 = new JButton();
  20.     jButton1.setBounds(new Rectangle(85, 51, 231, 46));
  21.     jButton1.setText("jButton1" );
  22.     jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
  23.     this.getContentPane().setLayout(null);
  24.     jButton2.setBounds(new Rectangle(78, 118, 228, 44));
  25.     jButton2.setText("jButton2" );
  26.     this.setSize(new Dimension(400, 300));
  27.     this.setTitle("bb" );
  28.     this.getContentPane().add(jButton1, null);
  29.     this.getContentPane().add(jButton2, null);
  30.   }
  31.   void jButton1_actionPerformed(ActionEvent e) {
  32. ///////////////////////////////////////////////////////////////////////////////////////////////
  33. Frame2 fflo= new Frame2(this);
  34.     fflo.setVisible(true);
  35. ///////////////////////////////////////////////////////////////////////////////////////////////
  36.   }
  37. }
  38. class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener {
  39.   Frame1 adaptee;
  40.   Frame1_jButton1_actionAdapter(Frame1 adaptee) {
  41.     this.adaptee = adaptee;
  42.   }
  43.   public void actionPerformed(ActionEvent e) {
  44.     adaptee.jButton1_actionPerformed(e);
  45.   }
  46. }
 


Frame2

 
Code :
  1. package index;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. public class Frame2 extends JFrame {
  6.   JButton jButton1 = new JButton();
  7.   JButton jButton2 = new JButton();
  8. ///////////////////////////////////////////////////////////////////////////////////////////////
  9.   JButton jButton3 = new JButton();
  10. private Frame1 f;
  11. ///////////////////////////////////////////////////////////////////////////////////////////////
  12. ///////////////////////////////////////////////////////////////////////////////////////////////
  13.   public Frame2(Frame1 f) {
  14.     try {
  15.       jbInit(f);
  16.     }
  17. ///////////////////////////////////////////////////////////////////////////////////////////////
  18.     catch(Exception e) {
  19.       e.printStackTrace();
  20.     }
  21.   }
  22.   private void jbInit(Frame1 f) throws Exception {
  23.     jButton1.setBounds(new Rectangle(50, 43, 158, 42));
  24.     jButton1.setText("jButton1" );
  25.     jButton1.addActionListener(new Frame2_jButton1_actionAdapter(this));
  26.     this.setSize(new Dimension(400, 300));
  27.     this.setTitle("client" );
  28.     this.getContentPane().setLayout(null);
  29.     jButton2.setBounds(new Rectangle(224, 87, 132, 41));
  30.     jButton2.setText("jButton2" );
  31.     jButton3.setBounds(new Rectangle(257, 27, 131, 31));
  32.     jButton3.setText("jButton3" );
  33.     jButton3.addActionListener(new Frame2_jButton3_actionAdapter(this));
  34.     this.getContentPane().add(jButton1, null);
  35.     this.getContentPane().add(jButton2, null);
  36.     this.getContentPane().add(jButton3, null);
  37.   }
  38.   void jButton1_actionPerformed(ActionEvent e) {
  39.   }
  40.   void jButton3_actionPerformed(ActionEvent e) {
  41. ///////////////////////////////////////////////////////////////////////////////////////////////
  42. f.jButton2.setVisible(false);
  43. ///////////////////////////////////////////////////////////////////////////////////////////////
  44.   }
  45. }
  46. class Frame2_jButton1_actionAdapter implements java.awt.event.ActionListener {
  47.   Frame2 adaptee;
  48.   Frame2_jButton1_actionAdapter(Frame2 adaptee) {
  49.     this.adaptee = adaptee;
  50.   }
  51.   public void actionPerformed(ActionEvent e) {
  52.     adaptee.jButton1_actionPerformed(e);
  53.   }
  54. }
  55. class Frame2_jButton3_actionAdapter implements java.awt.event.ActionListener {
  56.   Frame2 adaptee;
  57.   Frame2_jButton3_actionAdapter(Frame2 adaptee) {
  58.     this.adaptee = adaptee;
  59.   }
  60.   public void actionPerformed(ActionEvent e) {
  61.     adaptee.jButton3_actionPerformed(e);
  62.   }
  63. }


Message édité par fredixou le 29-04-2008 à 17:50:27
------------------------------ code de la route GRATUIT---> http://www.permik.net
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

A priori, c'est étonnant que ça ne vautre pas.

Dans Frame2, où affectes-tu la variable privée f ?

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Pour corriger, retire le mot clé static dans Frame1

 

static JButton jButton2 ;

 

et dans le constructeur, rajoute :
this.f = f;


Message édité par Vinz42 le 29-04-2008 à 18:12:44
------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Merci

"et dans le constructeur, rajoute :
this.f = f; "

Quel constructeur??

------------------------------ code de la route GRATUIT---> http://www.permik.net
Répondre à fredixou

google > langage objet

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Merci bien
Ca fonctionne

------------------------------ code de la route GRATUIT---> http://www.permik.net
Répondre à fredixou
Tom's Guide > Forum > Programmation > [java] generer instance vs variable static
Aller à :

Il y a 1815 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens