JTextField - Java - Programmation
Marsh Posté le 02-02-2003 à 19:10:40
f n'est pas déclaré? c a d que je dois marquer quoi dans EcouteSaisie?
f c'est une instance de Saisie. Je croyais que cétait accessible directement une fois crée.
CHaiCA
Marsh Posté le 02-02-2003 à 19:26:20
C'est parceque c'est pas la même classe. f n'est pas défini dans ta classe EcouteSaisie.
Tu peut faire de ta classe EcouteSaisie une classe interne de ta classe Saisie, et là elle aura accès à f.
[edit] j'ai viré mon idée de getSource, j'avais mal lu le prog.
Marsh Posté le 02-02-2003 à 19:33:49
chaica a écrit : f n'est pas déclaré? c a d que je dois marquer quoi dans EcouteSaisie? |
f est instancie dans le main de la classe Saisie mais il n'y aucune reference de f dans EcouteSaisie donc elle ne peut pas appeler f.contenuField()
Si tu veux que ca marche, tu peux par exemple passer f dans le contructeur de EcouteSaisie. C'est pas tres propre mais bon...
Marsh Posté le 02-02-2003 à 19:38:19
chaica a écrit : Et la référence à f on la fait comment? |
Code :
|
voir modif.
Mais c'est pas le meileur exemple de code propre....
A mon avis le mieux et de faire que Saisie implemente ActionListener et tu vires la classe EcouteSaisie.
Marsh Posté le 02-02-2003 à 19:42:43
fykman a écrit : |
inner class rulez
Marsh Posté le 02-02-2003 à 19:44:15
DarkLord a écrit : |
Aussi ,
mais je ne lui ai pas proposé pour ne pas l'embrouiller
Marsh Posté le 02-02-2003 à 19:48:21
Ca ne marche toujours pas pourtant ca me paraît cohérent .
Erreur :
Saisie.java:58: cannot resolve symbol
symbol : method contenuField ()
location: class javax.swing.JFrame
System.out.println(f.contenuField());
^
CHaiCA
Marsh Posté le 02-02-2003 à 19:50:43
chaica a écrit : Ca ne marche toujours pas pourtant ca me paraît cohérent . |
J'avais fait une erreur, j'ai deja modifié...
Marsh Posté le 02-02-2003 à 19:56:32
Ouais merci ca compile mais
J'obtiens ca :
chaica@debian:~/progra/java/perso/graphic/saisie$ java Saisie
Exception occurred during event dispatching:
java.lang.NullPointerException
at Saisie.contenuField(Saisie.java:31)
at EcouteSaisie.actionPerformed(Saisie.java:58)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:421)
at javax.swing.JTextField.postActionEvent(JTextField.java:586)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:696)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1384)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2078)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2104)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2041)
at java.awt.Component.processEvent(Component.java:3553)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2593)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2155)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2135)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:926)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
Ouais je sais je suis chiant
CHaiCA
Marsh Posté le 02-02-2003 à 19:58:34
chaica a écrit : Ouais merci ca compile mais |
T'a bien passe le this dans le contructeur ??
(voir dans la classe Saisie) :
Code :
|
Marsh Posté le 02-02-2003 à 20:03:20
Voici ma version actuelle :
Code :
|
Voili voila
Mais f est déclaré en Saisie alors ca pose pas des problèmes dans la méthode contenuField() qui contient un field de type JTextField?
CHaiCA
Marsh Posté le 02-02-2003 à 20:11:12
Et comment fait on pour déclarer une classe interne?
CHaiCA
Marsh Posté le 02-02-2003 à 20:13:40
comme ca:
Code :
|
Marsh Posté le 02-02-2003 à 20:32:03
et pourquoi pas simplement :
Code :
|
Marsh Posté le 02-02-2003 à 21:34:31
HappyHarry a écrit : et pourquoi pas simplement : |
Aussi oui, mais c'est quand même moins clair au point de vue lisibilité je trouve. Enfin, ici, ca ne change pas grand chose comme il n'y a qu'une méthode dans actionPerformed.
Marsh Posté le 02-02-2003 à 21:35:45
deltaden a écrit : |
boarf, tant que ca reste simple, c tres lisible ...
Marsh Posté le 02-02-2003 à 21:37:00
HappyHarry a écrit : |
oui, c'est pour ca que j'ai édité mon message
Marsh Posté le 02-02-2003 à 19:00:56
Surement un problème idiot mais je sèche depuis trop longtemps, j'y vois plus rien
mon programme prend un saisie dans un JTextField et l'affiche dans la console.
et voici l'erreur :
./EcouteSaisie.java:11: cannot resolve symbol
symbol : variable f
location: class EcouteSaisie
System.out.println(f.contenuField());
^
1 error
Si vous pouvez m'aider.
CHaiCA
Message édité par chaica le 02-02-2003 à 19:04:00