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...

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
Post a Comment