Not an enclosing class

ge17 Messages postés 15 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 30 juillet 2008 - 20 juin 2008 à 10:04
ge17 Messages postés 15 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 30 juillet 2008 - 26 juin 2008 à 08:55
Bonjour

Voilà j'essaye de compiler ma class "Menu" où se trouve cette partie de code :


Code :

public class GestionImprimer implements ActionListener /**Evènement du sous-item 'internet'**/
{
/**
* Methode pour lancer L'impression
* @param e ActionEvent
*/
public void actionPerformed(ActionEvent ev) {
/**Appel de la fonction "Exec" qui a été précedement déclaré e**/
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(Page3.this);
if(pj.printDialog()){

try
{
pj.print();
}
catch (Exception PrintException)
{
}
}
Variable.out.println("L'impression à été séléctionnée");
}
}
A la base, ce programme s'exécutait dans la class "Page3" et imprimait ce qu'affichait la class "Page3" mais je souhaiterais maintenant l'exécuter à partir de la class "Menu" et qu'il imprime toujours ce qu'affiche la class "Page3".

Seulement Voilà, le debugger m'affiche ce message :


Code :

D:\program files\Projet TPS BNG\guillaume\BNG\src\BNG\Application\Menu.java:282: not an enclosing class: BNG.Application.Page3
pj.setPrintable(Page3.this);

Je pense qu'il faut créer une variable dans "Page3" qui fasse le lien entre les deux class mais je ne sait pas comment m'y prendre.
Si quelqu'un avait une idée, elle serait la bienvenue.

2 réponses

indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
24 juin 2008 à 13:34
Salut
Le truc c'est que tu appelles la classe Page3 (et pas une instance), et que tu essais d'accéder à thispour pouvoir l'imprimer. De ce fait, le compilateur pense par défaut qu'il s'agit d'une classe "englobée" (et je dirais même statique, mais là, je ne suis pas sûre).

Du coup, il faudrait créer un constructeur (celui par défaut par exemple) qui initialise ta classe Page3, et que lorsque tu veux l'imprimer, tu crées soit une nouvelle instance, soit tu l'affectes dans une variables afin d'éviter une nouvelle génération (selon la complexité, ce dernier point est important)

tu aurais donc: pj.setPrintable(new Page3());

voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
ge17 Messages postés 15 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 30 juillet 2008
26 juin 2008 à 08:55
j'ai essayer ce que tu m'a dis d'ajouter à : pj.setprintable(...). Mais j'ai du complété la class "Page3" avec le paramètre présent dans le constructeur page3 de la class "Page3", ce qui donne au final :

pj.setPrintable(new Page3(retouracceuil));

puisque mon constructeur page3 est équivalent à :

/**
* Méthode constructeur de Page3
* @param a Acceuil
*/
public Page3(Acceuil a) {

retouracceuil = a;


Le projet compile et s'exécute normalement et lorsque je fais l'action d'imprimer et bien je me retrouve avec 4 feuilles blanches. donc toujours impossible d'imprimer ce qui se trouve dans la class "Page3". Est ce que tu vois d'où peut venir le problème..

merci d'avance "indiana_jules"
0
Rejoignez-nous