OVH Cloud OVH Cloud

Réactivation d'un JButton

2 réponses
Avatar
Herve
Bonjour à tous,

J'ai deux classes abc et def.

Le fonctionnement est le suivant:

Ouverture d'une JFrame (abc) avec un bouton associé
lorque je clique sur le bouton j'ouvre une autre fenêtre (def)
et avant cette ouverture j'inactive mon bouton b1.setEnabled(false);

au niveau de ma seconde fenêtre lorsque que je clique sur le bouton
je souhaites fermer la fenetre et je dois réactiver le bouton
et cela ne fonctione pas.

Ci-joint le code, c'est beaucoup plus parlant et merci d'avance pour votre
aide

------ abc.java -------

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class abc extends JFrame
{
// Les variables.
public static JButton b1;
FlowLayout fl;
Ecouteur ecouteur;

// Les méthodes *
// Le constructeur
public abc()
{
super("GestImmo");
setResizable(false);
setSize(420,60);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent ev)
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
});

fl = new FlowLayout(FlowLayout.CENTER);
b1 = new JButton("Collectifs");
getContentPane().setLayout(fl);
getContentPane().add(b1);

//Abonnement à l'évenement GraphiqueEvenements + Attachement à l'action
ecouteur = new Ecouteur();
b1.addActionListener(ecouteur);
}


// Methode pour réactivation des champs boutons
public void reactiver()
{
b1.setEnabled(true);
}

public void desactiver()
{
b1.setEnabled(false);
}

public void essai()
{
System.out.println("Méthode essai de la classe abc");
}

// classe pour la gestion des évenements
class Ecouteur implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
desactiver();
//Instanciation de ma classe def
def gt = new def();
gt.show();
}
}

public static void main(String args[])
{
abc a = new abc();
a.show();
}

}



------ def.java ------

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class def extends JFrame
{
//Déclaration des variables
JButton b3 = new JButton();

// Le constructeur
public def()
{
super("***********"); //Ne pas oublier de récupérer le nom de la variables
correspondant au nom du module

this.setResizable(true);
setSize(300,300);



addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
recuperation recup = new recuperation();
}
});


b3.setText("Valider");
getContentPane().add(b3); // AFFICHE le tableau associé au Layout
pack();


b3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
System.out.println("Vous avez appuyez sur le bouton Valider");
recuperation recup = new recuperation();
System.out.println(".......");
}
});


}

class recuperation extends abc
{
public recuperation()
{
System.out.println("Constructeur recuperation");
System.out.println("-------------------------");
// méthode de la classe abc ***
reactiver();
}
}

}

2 réponses

Avatar
Dave S.
salut
dans ta classe def tu crée un objet de type recuperation, certe qui herite
de abc mais qui n'a pas pour autant de lien avec le premier objet de typer
abc, donc aucune raison que la 'récactivation' du boutton ne marche.
Tu dois dans ton instance de classe def garder un 'lien' vers ta classe abc
apellante afin de lui appliquer la 'reactication'
En gros, ne te trompes pas d objet si tu veux avoir le resultat escompté.


"Herve" a écrit dans le message de
news:bkq1t3$tjb$
Bonjour à tous,

J'ai deux classes abc et def.

Le fonctionnement est le suivant:

Ouverture d'une JFrame (abc) avec un bouton associé
lorque je clique sur le bouton j'ouvre une autre fenêtre (def)
et avant cette ouverture j'inactive mon bouton b1.setEnabled(false);

au niveau de ma seconde fenêtre lorsque que je clique sur le bouton
je souhaites fermer la fenetre et je dois réactiver le bouton
et cela ne fonctione pas.

Ci-joint le code, c'est beaucoup plus parlant et merci d'avance pour votre
aide

------ abc.java -------

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class abc extends JFrame
{
// Les variables.
public static JButton b1;
FlowLayout fl;
Ecouteur ecouteur;

// Les méthodes *
// Le constructeur
public abc()
{
super("GestImmo");
setResizable(false);
setSize(420,60);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent ev)
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
});

fl = new FlowLayout(FlowLayout.CENTER);
b1 = new JButton("Collectifs");
getContentPane().setLayout(fl);
getContentPane().add(b1);

//Abonnement à l'évenement GraphiqueEvenements + Attachement à l'action
ecouteur = new Ecouteur();
b1.addActionListener(ecouteur);
}


// Methode pour réactivation des champs boutons
public void reactiver()
{
b1.setEnabled(true);
}

public void desactiver()
{
b1.setEnabled(false);
}

public void essai()
{
System.out.println("Méthode essai de la classe abc");
}

// classe pour la gestion des évenements
class Ecouteur implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
desactiver();
//Instanciation de ma classe def
def gt = new def();
gt.show();
}
}

public static void main(String args[])
{
abc a = new abc();
a.show();
}

}



------ def.java ------

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class def extends JFrame
{
//Déclaration des variables
JButton b3 = new JButton();

// Le constructeur
public def()
{
super("***********"); //Ne pas oublier de récupérer le nom de la variables
correspondant au nom du module

this.setResizable(true);
setSize(300,300);



addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
recuperation recup = new recuperation();
}
});


b3.setText("Valider");
getContentPane().add(b3); // AFFICHE le tableau associé au Layout
pack();


b3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
System.out.println("Vous avez appuyez sur le bouton Valider");
recuperation recup = new recuperation();
System.out.println(".......");
}
});


}

class recuperation extends abc
{
public recuperation()
{
System.out.println("Constructeur recuperation");
System.out.println("-------------------------");
// méthode de la classe abc ***
reactiver();
}
}

}





Avatar
Herve
Bonjour,

Dave, je n'ai pas très bien compris, peux-tu m'indiquer
comment on fait.
Merci d'avance.

"Dave S." a écrit dans le message de
news:bkq627$n5c$
salut
dans ta classe def tu crée un objet de type recuperation, certe qui herite
de abc mais qui n'a pas pour autant de lien avec le premier objet de typer
abc, donc aucune raison que la 'récactivation' du boutton ne marche.
Tu dois dans ton instance de classe def garder un 'lien' vers ta classe
abc

apellante afin de lui appliquer la 'reactication'
En gros, ne te trompes pas d objet si tu veux avoir le resultat escompté.


"Herve" a écrit dans le message de
news:bkq1t3$tjb$
Bonjour à tous,

J'ai deux classes abc et def.

Le fonctionnement est le suivant:

Ouverture d'une JFrame (abc) avec un bouton associé
lorque je clique sur le bouton j'ouvre une autre fenêtre (def)
et avant cette ouverture j'inactive mon bouton b1.setEnabled(false);

au niveau de ma seconde fenêtre lorsque que je clique sur le bouton
je souhaites fermer la fenetre et je dois réactiver le bouton
et cela ne fonctione pas.

Ci-joint le code, c'est beaucoup plus parlant et merci d'avance pour
votre


aide

------ abc.java -------

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class abc extends JFrame
{
// Les variables.
public static JButton b1;
FlowLayout fl;
Ecouteur ecouteur;

// Les méthodes *
// Le constructeur
public abc()
{
super("GestImmo");
setResizable(false);
setSize(420,60);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent ev)
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
});

fl = new FlowLayout(FlowLayout.CENTER);
b1 = new JButton("Collectifs");
getContentPane().setLayout(fl);
getContentPane().add(b1);

//Abonnement à l'évenement GraphiqueEvenements + Attachement à l'action
ecouteur = new Ecouteur();
b1.addActionListener(ecouteur);
}


// Methode pour réactivation des champs boutons
public void reactiver()
{
b1.setEnabled(true);
}

public void desactiver()
{
b1.setEnabled(false);
}

public void essai()
{
System.out.println("Méthode essai de la classe abc");
}

// classe pour la gestion des évenements
class Ecouteur implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
desactiver();
//Instanciation de ma classe def
def gt = new def();
gt.show();
}
}

public static void main(String args[])
{
abc a = new abc();
a.show();
}

}



------ def.java ------

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class def extends JFrame
{
//Déclaration des variables
JButton b3 = new JButton();

// Le constructeur
public def()
{
super("***********"); //Ne pas oublier de récupérer le nom de la
variables


correspondant au nom du module

this.setResizable(true);
setSize(300,300);



addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
recuperation recup = new recuperation();
}
});


b3.setText("Valider");
getContentPane().add(b3); // AFFICHE le tableau associé au Layout
pack();


b3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
System.out.println("Vous avez appuyez sur le bouton Valider");
recuperation recup = new recuperation();
System.out.println(".......");
}
});


}

class recuperation extends abc
{
public recuperation()
{
System.out.println("Constructeur recuperation");
System.out.println("-------------------------");
// méthode de la classe abc ***
reactiver();
}
}

}