IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Tableau et classes abstraites


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut Tableau et classes abstraites
    Bonjour à tous,

    Je n'arrive pas à trouver la solution à ce problème, je n'arrive pas à la trouver dans ma doc.

    J'ai une fenêtre avec un JMenu. A côté, une classe ValTransfo conserve des valeurs int et double. Je l'utilise sous forme de tableau :
    ValTransfo[] TDP = new ValTransfo[];

    Depuis les menus de la fenêtre, j'appelle TDP[i]. setVal(int...), mais comme Action event est une classe abstraite, cela ne marche pas. Que dois-je faire? (en fait, j'essaie de transférer des valeurs d'une fenêtre de JSpinners vers cette ValTransfo).

    Dois-je créer une classe spéciale? Je n'arrive pas à trouver laquelle. Et puis, encore une nouvelle classe?

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par HNoury
    Depuis les menus de la fenêtre, j'appelle TDP[i]. setVal(int...), mais comme Action event est une classe abstraite, cela ne marche pas.
    Je ne comprends pas cette phrase...

    Et je ne vois pas où est ton problème de menu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JMenuItem leBoutonDeTonMenu = new JMenuItem("bouton du menu");
    leBoutonDeTonMenu.addActionListener(
       new ActionListener() {
          public void ActionPerformed(ActionEvent e) {
             TDP[i]. setVal(int...);
          }
       }
    );
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    Oui, en effet, il faut instancier le TDP[] dans la méthode Action Event, et non dans le constructeur de la fenêtre. Là, il est reconnu. J'espère, et je vais tester cela aujourd'hui, qu'il ne sera pas initialisé à chaque nouvelle manip des menus!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    J'ai vraiment un conflit entre mon tableau et les classes abstraites. Si je mets l'ActionEvent dans le constructeur de ma fenêtre, le compilateur le rejette parce que je ne peux pas mettre de méthode abstraite dans un constructeur. Si je fais une void à part, le tableau se perd en cours de route, et, à l'éxécution, une NullPointerExeption apparaît.

    Que peut-on faire???

    J'ai essayé de mettre final TDP[], ou static, cela n'a rien changé par exemple.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Par défaut
    Bonjour,

    Est-ce que tu pourrais mettre ton code afin de voir ce qui cloche ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    Voila la classe qui pose problème. J'ai mis beaucoup de code, j'espère qu'on peut...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    class Fenetre extends JFrame implements ActionListener { //implements ActionListener
    	Fenetre(){
    		setTitle ("IFS ");
    		setSize (800, 550); 
     
    		pan = new JPanel();
    		pan.setSize(800,550);
    		//(...)
    		JMenuBar barreMenus = new JMenuBar(); 		// barre de menus.
    		setJMenuBar (barreMenus);
    		//(...)		
    		JMenu Transfo = new JMenu ("Transformation"); 	// Menu Transformation.
    		barreMenus.add(Transfo);
    		SauverTransfo = new JMenuItem ("Sauver les modifications"); 
    		SauverTransfo.addActionListener (this);
    		Transfo.add(SauverTransfo);
    		TransfoMoins = new JMenuItem ("Transformation précédente"); 
    		TransfoMoins.addActionListener (this);
    		Transfo.add(TransfoMoins);
    		TransfoPlus = new JMenuItem ("Transformation suivante"); 
    		TransfoPlus.addActionListener (this);
    		Transfo.add(TransfoPlus);
     
     
    		C1 = new PlanC();		/*C1 est une fenêtre de JSpinners avec écouteurs.*/
    		C1.setVisible(true);		/*C1 est doté de méthodes set et get.*/
    	}
     
    	public void actionPerformed (ActionEvent e){	
    		Object source = e.getSource();
    		ValPlan VP = new ValPlan(); 
    	/* Si je n'instancie pas ici VP et TDP[], rien ne marche, mais alors je ne peux bien évidemment pas stocker les valeurs puisque elles sont réinitialisées !*/
     
    		nT = 4;
     
    		ValTransfo TDP[] = new ValTransfo[nT];	//Tableau de transformations.	
     
    		VP.setRedValP(0);	
    /*enregistrement des valeurs par défaut. Le tableau n'est pas conservé si je fais ceci dans la méthode « Nouveau », ce qu'il faudra bien faire pourtant...*/
    		VP.setGreenValP(0);				
    		//(etc, pour les autres valeurs...)
     
    			for (i=0; i<nT; i++){	
     
    			TDP[i] = new ValTransfo();		
    			TDP[i].setRotVal(0);			/* Même remarque...*/
    			//(etc, pour les autres valeurs...)
    			}
     
     
     
    		if (source == Nouveau)		{
     
    	/* Si j'enregistre ici les valeurs par défaut, le tableau est perdu ensuite!*/
     
    			VP.setRedValP(0);				
    			VP.setGreenValP(0);				
    			//(.etc, pour les autres valeurs..)
     
    			for (i=0; i<nT; i++){	
     
    			TDP[i] = new ValTransfo();		
    			TDP[i].setRotVal(0);			
    			//(etc, pour les autres valeurs ...)
    			}
    		}
     
    	if (source == SauverTransfo)		{
    /*ceci marche depuis que j'ai précisé que C1 était « final PlanC C1 », et non « PlanC C1 » tout seul*/
     
    			int i = C1.getiT();
     
    			RotVal = C1.getRotation();
    			HomXVal = C1.getHomotetieX();
    				//(.etc, pour les autres valeurs..)
     
    		/*Ceci ne marche pas*/	
    			TDP[i].setRotVal(RotVal);			
    			TDP[i].setSymXVal(SymXVal);
    			//(etc, pour les autres valeurs ...)
     
    		}
     
    		if (source == TransfoPlus)		{
    		/*On veut ici rappeler à la fenêtre de Jspinners les valeurs du tableau*/	
    			int i = C1.getiT();
     
    			if (i<(nT-1)){
    				i++;
    				C1.setiT(i);
     
    				C1.setRotation(TDP[i].getRotVal());			
    				C1.setSymetrieX(TDP[i].getSymXVal());
    				//(etc, pour les autres valeurs ...)
    			}
    			else{
    			}
    		}
     
    		if (source == TransfoMoins)		{
     
    			/*(similaire à la précédente)*/
    	}
    	}
     
    	private JPanel pan;
    	private JMenu Fichiers, Film, Plan, Transfo;
    	private JMenuItem Nouveau, Ouvrir, Enregistrer, ExportFilm, CalculFilm, MontrerCont;
    	private JMenuItem ExportPlan, AllerPlan, TracePlan, SauvePlan;
    	private JMenuItem SauverTransfo, TransfoPlus, TransfoMoins;
    	final public PlanC C1;
     
    	public Color CouleurT, CFd;
    	public double A, B, C, D, E, F, ProbVal;
    	public double HomXVal, HomYVal, TransXVal, TransYVal;
    	public int RotVal, SymXVal, SymYVal, RedVal, GreenVal, BlueVal;
    	public int RedValP, GreenValP, BlueValP, CadreXVal, CadreYVal, NbrePts;
    	public int nT, i, iT, nP;
    	public int ZoomVal;
    	double AnRad;
     
    	private ValTransfo TDP[];//cela ne marche pas mieux avec public...
    	private ValPlan VP;//idem.
    }
    Notez que si j'instancie VP ou TDP[] dans le constructeur de la fenêtre, et non dans les void, cela ne marche pas non plus. Comment résoudre le problème?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tableau héritage classe abstraite
    Par zeracoa dans le forum C++
    Réponses: 18
    Dernier message: 07/04/2013, 23h55
  2. Tableau d'objets de classe abstraites?
    Par dré kam dans le forum Débuter
    Réponses: 14
    Dernier message: 19/02/2012, 18h39
  3. Tableau et classe abstraite
    Par NFHnv dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 18/03/2009, 15h28
  4. Classe abstraite / MVC
    Par caramel dans le forum MVC
    Réponses: 5
    Dernier message: 01/04/2003, 09h27
  5. pb constructeurs classes dérivant classe abstraite
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2003, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo