05. januar 2003 - 19:42
Der er
15 kommentarer og 1 løsning
JTextField har ændret værdi
Hvordan registrerer man at et JTextField har ændret værdi Eks.: En knap ændrer feltets værdi fra 'A' til 'B', derefter følger en eventuel handling, afhængig af værdien i feltet. Carsten
Annonceindlæg tema
05. januar 2003 - 19:52
#1
Knappen laver noget og afslutter med at vise en eller anden værdi i et tekstefelt...Kan du ikke få den til at handle ud fra denne værdi inden at det sættes i tekstfeltet?? Mvh Casualty
05. januar 2003 - 19:55
#2
void minKnap_actionPerformed(ActionEvent e) { //her sættes en værdi i tekstfeltet //Her gør den noget med værdien }
05. januar 2003 - 19:58
#3
Det jeg mener, er at hvis det er knappen der ændrer værdien i dit JTextField, så kan det jo ligesågodt også være knappen der sætter en handling igang ud fra værdien... Mvh Casualty
05. januar 2003 - 19:58
#4
Svar
05. januar 2003 - 20:06
#5
Hmm Du kan holde øje med om indholdet i dit JTextField er ændret ved at add'e en ActionListener
05. januar 2003 - 20:25
#6
Casulty> Det kunne jeg måske, men jeg er kun interesseret i den 'gamle' o 'nye' værdi i textfeltet. bearhugx> Virker ikke kun ved tastetryk i feltet ???? Skal man ikke arbejde sig henimod noget med ChangeListener ??? Jeg ved bare ikke lige hvordan man bruger den ! PS: Undskyld at jeg sad og halvsov !! Carsten
05. januar 2003 - 20:28
#7
Her er en mere rafineret version : { JTextField txtInput = new JTextField(); txtInput.getDocument().addDocumentListener( new TextChangedListener(this) ); .... public void doStuffOnChange() { // her sker, hvad der skal ske, når indholdet i txtInput ændrer sig... } } public class TextChangedListener implements DocumentListener { Object adaptee; public TextChangedListener(Object adaptee) { this.adaptee = adaptee; } public void changedUpdate(DocumentEvent de) { adaptee.doStuffOnChange(); } }
05. januar 2003 - 20:30
#8
Her er en mere rafineret version : { JTextField txtInput = new JTextField(); txtInput.getDocument().addDocumentListener( new TextChangedListener(this) ); .... public void doStuffOnChange() { // her sker, hvad der skal ske, når indholdet i txtInput ændrer sig... } } public class TextChangedListener implements DocumentListener { Object adaptee; public TextChangedListener(Object adaptee) { this.adaptee = adaptee; } public void changedUpdate(DocumentEvent de) { adaptee.doStuffOnChange(); } }
05. januar 2003 - 20:32
#9
Suk .. det er hvad, der sker, når eksperten lagger, og man så trykker en ekstra gang :-/
05. januar 2003 - 20:33
#10
ActionListener --> Action bliver åbenbart kun affyret når der trykkes ENTER ;-/
05. januar 2003 - 20:53
#11
Jeg er enig med Casualty - det er langt nemmere at lade den kode der opdaterer feltet også lave det øvrige. ActionListener er kun løsningen hvis det er direkte bruger input.
05. januar 2003 - 21:18
#12
Så lad os i dette tilfælde sige, at det er brugerinput som ændrer værdien i feltet. Er det så bearhugx's forslag som er løsningen ???
05. januar 2003 - 22:32
#13
bearhugx Hvad menes med 'adaptee' Jeg kan se, at det er dit forslag jeg skal bruge, kan bare ikke få det til at virke, kigger videre imorgen. Carsten
06. januar 2003 - 18:02
#14
_carsten >> har du fået det til at virke... ??? Takker for points, men vil lige sikre mig, at mit forslag også er løsningen -- Det er nemlig ikke aftestet selv (har ikke haft tid...)
06. januar 2003 - 22:24
#15
Tak - tak - tak, det virker, ideen var super !! Jeg måtte modificere det lidt, kunne ikke rigtig få dit til at virke, men du fik sat mig ind på det rigtige spor. Her en lille ide om hvordan det ser ud hos mig. feltXX.getDocument().addDocumentListener(new MyDocumentListener()); class MyDocumentListener implements javax.swing.event.DocumentListener { public void changedUpdate(javax.swing.event.DocumentEvent de) { doStuff(); } public void insertUpdate(javax.swing.event.DocumentEvent de) { doStuff(); } public void removeUpdate(javax.swing.event.DocumentEvent de) { doStuff(); } } public void doStuff(){ String s = feltXX.getText(); }
06. januar 2003 - 23:46
#16
Hmmm... Ja, og du slipper helt for Adaptor/adaptee-problematikken ved at lave klassen intern ... Se, så langt havde jeg jo ikke tænkt den :-) Adaptee == den klasse, som bruger en Adapter... Det glæder mig, at du har fået det til at virke :-) /Søren
Kurser inden for grundlæggende programmering