java - Unable to type or delete text in JTextfield -


i'm learning java using art , science of java (using java se 6u45). trying change font of text entering new font type in jtextfield. problem can't enter text in jtextfield. problem common other swing components i've used jbutton, jcheckbox. in latter components see effect of selection, though visual selection stays same, meaning check box remains checked after clicking code shows result of unchecked box.

but in case of jtextfield, not effect showing. not delete test text put in jtextfield. tried use iseditable() , grabfocus() , isfocusable(). java bug ?

/** * example 10.9  *   * program prints given text in font inputted user in jtextfield  */ package asj_examples;  import java.awt.event.actionevent; import java.awt.event.actionlistener;  import javax.swing.jlabel; import javax.swing.jtextfield;  import acm.graphics.glabel; import acm.program.graphicsprogram;  public class fontsampler extends graphicsprogram implements actionlistener{ /**  * eclispe generated  */ private static final long serialversionuid = -5734136235409079420l; private static final string test_string = "this test"; private static final double left_margin = 3; private static final int max_font_name = 10;  public void init(){     addjfontlabel();     addjfonttextfield();     lasty = 0;     addglabel();  } /**  * adds text field enter required font  */ private void addjfonttextfield() {     string test = "new";     fontfield = new jtextfield(test, max_font_name);    //added see if jtextfiled responding  //      fontfield.setenabled(true); //      fontfield.seteditable(true);     fontfield.addactionlistener(this);     //added these give focus jtextfield no effect     fontfield.iseditable();     fontfield.grabfocus();     fontfield.isfocusable();     //add window     add(fontfield, south);  } /**  * adds jfontlabel denote text input field  */ private void addjfontlabel() {     add(new jlabel("font"), south);  }  /**  * adds test label canvas  */ private void addglabel() {     lastlabel = new glabel(test_string);     add(lastlabel, 20, 20);  }  public void actionperformed(actionevent e){     if(e.getsource() == fontfield){         glabel label = new glabel(test_string);         label.setfont(lastlabel.getfont()); //to display text if suer entered non-allowed font         label.setfont(fontfield.gettext()); //change font u4ser demanded font         addglabel(label);         lastlabel = label;     } } /**  *adds glabel on next line adjusting heights  * @param label  */ private void addglabel(glabel label) {     lasty += label.getheight();     lasty += lastlabel.getdescent() - label.getdescent();     add(label, left_margin, lasty);  } /**  * jtextfield enter font  */ private jtextfield fontfield; /**  * glabel being worked on  */ private glabel lastlabel; /**  *   */ private double lasty; } 

try using fontfield.requestfocus(); instead of fontfield.grabfocus(); , fontfield.seteditable(true); instead of fontfield.iseditable(); fontfield.setfocusable(true); instead of fontfield.isfocusable();

btw fontfield.seteditable(true); , fontfield.setfocusable(true); not necessary default set true.


Comments