java - Swing JTextField on text change -


i working on swing form. when user changes text in textfield, want input other fields, calculations , display results. how can that?

here have far:

jtextfield3.addkeylistener(      new keyadapter() {         public void keytyped(keyevent e){            char c = e.getkeychar();            if('0'<=c && c<='9') {                 string = jtextfield6.gettext().tostring();                 string l = jtextfield7.gettext().tostring();                 int m = integer.parseint(a);                 int n = integer.parseint(l);                 jtextfield13.settext("" + m*n);           }        }     }); 

if want monitor changes 1 or more text fields, should using documentlistener, provide notification's of when user pastes text field or field changed programatically (via call settext)

for example...

bunnies

import java.awt.eventqueue; import java.awt.gridbaglayout; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jtextfield; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception; import javax.swing.event.documentevent; import javax.swing.event.documentlistener;  public class text {      public static void main(string[] args) {         new text();     }      public text() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                     ex.printstacktrace();                 }                  jframe frame = new jframe("testing");                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 frame.add(new testpane());                 frame.pack();                 frame.setlocationrelativeto(null);                 frame.setvisible(true);             }         });     }      public class testpane extends jpanel {          public testpane() {             setlayout(new gridbaglayout());              jtextfield field1 = new jtextfield(10);             jtextfield field2 = new jtextfield(10);             jtextfield field3 = new jtextfield(10);              documentlistener dl = new documentlistener() {                  @override                 public void insertupdate(documentevent e) {                     updatefieldstate();                 }                  @override                 public void removeupdate(documentevent e) {                     updatefieldstate();                 }                  @override                 public void changedupdate(documentevent e) {                     updatefieldstate();                 }                  protected void updatefieldstate() {                     string text = field1.gettext() + " " + field2.gettext();                     field3.settext(text);                 }             };              field1.getdocument().adddocumentlistener(dl);             field2.getdocument().adddocumentlistener(dl);             field3.seteditable(false);              add(field1);             add(field2);             add(field3);         }      }  } 

now, appear trying limit character can typed field. use jspinner or jformattedtextfield, these provide post validation.

for real time validation, should using documentfilter, allow intercept entered field before it's applied underlying document.

see implementing documentfilter , documentfilter examples more details


Comments