Bonjour,
Voilà j'ai un petit soucis: je n'arrive pas à faire un .setText("blabla"); d'un JTextField après lui avoir mi un .addActionListener();
Quelqu'un a une idée ?
Bonjour,
Voilà j'ai un petit soucis: je n'arrive pas à faire un .setText("blabla"); d'un JTextField après lui avoir mi un .addActionListener();
Quelqu'un a une idée ?
Un petit bout de code, pour pouvoir voir le contexte ?
Cela me déclenche l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 JTextField txtID = new JTextField(5); txtID.setBounds(110, 32, 180, 23); txtID.setBackground(Color.RED); txtID.getDocument().addDocumentListener(this); txtID.setText("blablabla");
Alors que si txtID.setText("blablabla"); je le mets juste une ligne au dessus, ça marche très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
En fait mon but est de limiter le nombre de caractères dans mon txtID. Après de multiples recherches sur google, j'ai décidé de faire mon propre algorithme.
Mais voilà, La fameuse ligne ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (txtID.getText().length() > 5) { String ID = ""; for (int i = 0; i < 5; i++) ID += txtID.getText().charAt(i); txtID.setText(ID); }
Je pense que l'erreur doit être dans la méthode "insertUpdate(DocumentEvent)".
Dans ce qui suit "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException", une des ligne doit indiquer le nom de ton fichier java suivi du numéro de ligne où c'est produit l'erreur, qu'elle est cette ligne ?
Une remarque pour créer un texte de 5 caractères à partir du début d'un texte plus grand, tu peux faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part txtID.setText( txtID.getText().substring(0, 5) );
Je me suis trompé de message d'erreur dsl
Voilà, c'est le bon cette fois
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 init: deps-jar: compile: Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Attempt to mutate in notification at javax.swing.text.AbstractDocument.writeLock(AbstractDocument.java:1343) at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:662) at javax.swing.text.JTextComponent.setText(JTextComponent.java:1441) at videotheque.frmInfos.TextChanged(frmInfos.java:962) at videotheque.frmInfos.insertUpdate(frmInfos.java:928) at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:184) at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:754) at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:711) at javax.swing.text.PlainDocument.insertString(PlainDocument.java:114) at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:673) at javax.swing.text.JTextComponent.replaceSelection(JTextComponent.java:1099) at apple.laf.CUIAquaLookAndFeel$KeyTypedAction.actionPerformed(CUIAquaLookAndFeel.java:1082) at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1576) at javax.swing.JComponent.processKeyBinding(JComponent.java:2772) at javax.swing.JComponent.processKeyBindings(JComponent.java:2807) at javax.swing.JComponent.processKeyEvent(JComponent.java:2735) at java.awt.Component.processEvent(Component.java:5379) at java.awt.Container.processEvent(Container.java:2010) at java.awt.Component.dispatchEventImpl(Component.java:4068) at java.awt.Container.dispatchEventImpl(Container.java:2068) at java.awt.Component.dispatchEvent(Component.java:3903) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1826) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:938) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645) at java.awt.Component.dispatchEventImpl(Component.java:3941) at java.awt.Container.dispatchEventImpl(Container.java:2068) at java.awt.Window.dispatchEventImpl(Window.java:1791) at java.awt.Component.dispatchEvent(Component.java:3903) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
le code se situe dans frmInfos.java (qui est une JFrame), et la ligne 962 est celle ou se situe txtID.setText("blabla");
L'erreur indique que le contenu du JTextField n'est pas modifiable pendant le traitement d'un événement de modification.
Utilise plutôt un FocusListener pour modifier le JTextField en fin de saisie ou l'événement de fermeture de la fenêtre qui le contient.
Pourrais-tu détailler davantage stp, je ne te suis pas trop là![]()
Comme tu ne peux pas modifier, le texte pendant la saisie, une solution est d'utiliser un événement qui a lieu après.
Parmi ceux là Il y a l'événement de perte du focus du JTextField et la fermeture de la fenêtre (ou l'action sur le bouton qui valide la fermeture de la fenêtre) qui contient le JTextField.
C'est juste une idée, à toi de voir dans le contexte de ton appli, si elle est bonne ou non.
Ah d'accord je vois mais le soucis c'est qu'avec ta proposition je ne peux en aucun cas faire :
à chaque fois que le texte du JTextField change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part txtID.setText( txtID.getText().substring(0, 5) );
Ok mais c'est bon je viens de trouver une alternative.
En fait je le fais dans l'événement keyReleased et donc c'est bon ça marche nikel.
Merci d'avoir prêté attention à mon problème.
Partager