java - KeyListener and keyPressed -


i'm trying build screen keyboard , need little help. idea: text copied(copy , paste )from external source used learning touch typing.
when type correct character, character highlighted in jtextarea green color, , button color changed green, if type incorrect character, button change color red

when press in pc keyboard buttons on screen keyboard not changes background green .

public class box extends jframe { jframe frame = new jframe("box value & area"); gridlayout form_grig = new gridlayout(3,0); gridlayout panel_grid = new gridlayout(1,18); jpanel ans = new jpanel(new gridlayout(1,2)); final jlabel label =new jlabel("points : "); final jlabel label2 = new jlabel("answer "); final jlabel label3 = new jlabel("length : "); final jlabel label4 =  new jlabel("volume"); public int index=0; public int counter=0; public int press_count=-1; jpanel panel = new jpanel(); private jpanel parent = new jpanel(new gridlayout(0, 1)); final jtextarea text1 =  new jtextarea();        private jbutton[][] button;  private jpanel[] panel = new jpanel[6]; public jbutton start = new jbutton("start game"); private static final string[][] key = {         {"esc", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12", "num", "insert", "delete", "pause"},         {"~\n`", "1", "2", "3", "4", "5","6", "7", "8", "9", "0", "-", "=", "backspace  "},          {"   tab    ", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "{", "}", "|"},         {"caps lock","a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "    enter       "},         {"       shift        ", "z", "x", "c", "v", "b","n", "m", "<", ">", "?", "shift"},         {"ctrl", "fn", "alt", "                space                                  ", "alt","ctrl"}};     public box(){                                frame.setlayout(form_grig);                                                  frame.add(text1 );             ans.add(label);             ans.add(label2);             button = new jbutton[20][20];              (int row = 0; row < key.length; row++) {                                                       panel[row] = new jpanel();                                         (int column = 0; column < key[row].length; column++) {                          button[row][column] = new jbutton(key[row][column]);                         button[row][column].putclientproperty("column", column);                         button[row][column].putclientproperty("row", row);                         button[row][column].putclientproperty("key", key[row][column]);                         button[row][column].addactionlistener(new myactionlistener());                                                                                           panel[row].add(button[row][column]);                     }                     parent.add(panel[row]);              }             frame.add(ans);                                                          frame.add(parent);                                                       frame.pack();             frame.setresizable(false);             frame.setvisible(true);                                                       font font = new font("verdana", font.bold, 56);             label2.setfont(font);             label2.setforeground(color.gray);             label.setfont(font);             label.setforeground(color.gray); } public class myactionlistener implements actionlistener {        string te = text1.gettext();             @override        public void actionperformed(actionevent e) {         final jbutton btn =(jbutton) e.getsource();         text1.addkeylistener(new keylistener(){             @override             public void keypressed(keyevent e) {                 if (!text1.gettext().equals("")){                      text1.seteditable(false);                 }                    btn.setbackground(color.green);                 system.out.println("this :"+ btn.getname());             }             @override             public void keyreleased(keyevent e) {   //dsd                                        }             @override             public void keytyped(keyevent e) {//sdsd                 // todo auto-generated method stub                           }                         });                                               string te = text1.gettext();          string size = null;              if(press_count >= te.length()  ){                 joptionpane.showmessagedialog(null, "from "+te.length() +"  characters guess "+index );                          }             press_count++;           size = integer.tostring(te.length());//adad           if (index==0)                  counter=te.length();              label2.settext(size);  //settext                 string bbb = (string) btn.getclientproperty("key") ;                  if(bbb.equals(string.valueof(te.charat(index)))){                   btn.setbackground(color.green);                                               label2.settext(integer.tostring(counter));             }             else{                  btn.setbackground(color.red);//setting background                 counter--;                  label2.settext(integer.tostring(counter));              }             index++;//     }  } 

why when press pc buttons, buttons on screen keyboard doesn't change background color ?

"why when press pc buttons, buttons on screen keyboard doesn't change background color"

they change, @ logic,:

it should change color when key pressed on text area. meaning need focus text area , type something.

you adding multiple keylistener text area, on every button press. don't think trying do.

actually. shouldn't using keylistener at all text components. changes in underlying document of text components should listened via documentlistener. documentlistener should added once text area, outside of actionlistener. reason component may have more 1 listener registered it, if same listener (as doing). happens each listener call gets put queue. if you've pressed 10 buttons, text area have 10 listener callbacks, , every time press key, call called 10 times.

you should read more on how use documentlistner

also presses of changing of color button, may want take @ this question.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -