Accès à une classe interne
Résolu
Gian-Piero
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Gian-Piero Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Gian-Piero Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans une application, j'utilise une classe interne (SaveL) à l'intérieur d'une classe JFrame (CinFrame). Cela fonctionne très bien.
Au vu de mes maigres compétences, je voudrais savoir s'il est possible d'accéder à cette classe interne (SaveL) à partir de la classe Main ci-dessous. Dans l'affirmative, comment faire?
Merci par avance de vos suggestions.
Dans une application, j'utilise une classe interne (SaveL) à l'intérieur d'une classe JFrame (CinFrame). Cela fonctionne très bien.
public class CinFrame extends JFrame implements Constantes {
...
private JMenuItem cinEnreg = new JMenuItem("Enregistrer");
...
// Cinème Enregistrer
cinEnreg.addActionListener(new SaveL());
...
// ----------------------------------------------------------------------
// CLASSES INTERNES -----------------------------------------------------
class SaveL implements ActionListener {
public void actionPerformed(ActionEvent e) {
...
}
...
}
Au vu de mes maigres compétences, je voudrais savoir s'il est possible d'accéder à cette classe interne (SaveL) à partir de la classe Main ci-dessous. Dans l'affirmative, comment faire?
public class Main {
public static void main(String[] args) {
final CinFrame cf = new CinFrame();
SplashScreen splash = new SplashScreen(4000);
splash.showSplash();
cf.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent windowEvent) {
int choix1 = JOptionPane.showConfirmDialog(cf, "Vraiment quitter l'application?",
"Quitter l'application?", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(choix1 == JOptionPane.YES_OPTION) {
int choix2 = JOptionPane.showConfirmDialog(cf, "Enregistrer le cinème?",
"Enregistrer?", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(choix2 == JOptionPane.YES_OPTION) {
// Je voudrais accéder ici à la classe SaveL
}
System.exit(0);
}
}
});
}
}
Merci par avance de vos suggestions.
A voir également:
- Accès à une classe interne
- Acces rapide - Guide
- Je n'ai plus acces a ma boite mail gmail - Guide
- Accès refusé - Guide
- Trousseau d'accès iphone - Guide
- Accès presse papier - Guide
2 réponses
Bonjour,
Je penses que c'est une mauvaise idée d'avoir un WindowListener qui dépend d'un ActionListener, ça n'a pas trop de sens.
Je pense que tu devrais sortir tes Listeners pour qu'ils ne soient plus interne, il te faudrait alors un constructeur qui prends en paramètre le CinFrame que tu manipules, et c'est la classe CinFrame qui fournirait les méthodes permettant de la manipuler.
Je penses que c'est une mauvaise idée d'avoir un WindowListener qui dépend d'un ActionListener, ça n'a pas trop de sens.
Je pense que tu devrais sortir tes Listeners pour qu'ils ne soient plus interne, il te faudrait alors un constructeur qui prends en paramètre le CinFrame que tu manipules, et c'est la classe CinFrame qui fournirait les méthodes permettant de la manipuler.
public TotoListener(CinFrame frame) { this.frame = frame; } public void actionPerformed(ActionEvent e) { frame.action(); } cinEnreg.addActionListener(new TotoListener(this));
public TataListener(CinFrame frame) { this.frame = frame; } if(choix2 == JOptionPane.YES_OPTION) { frame.action(); } cf.addWindowListener(new TataListener(this));