java - How to get JButtons to print integers in a JTextField by using Action Listener and Action Event? -


i trying create , hypothetical atm gui interface enter in couple of numbers through keypad. having trouble having program display numbers after user clicks of buttons. have created 1 button time sake:

public jbutton jbtone = new jbutton(standard_btn_texts[0][0]); 

so if user clicks 'jbtone' 4 times. jtextfield should display 1111. problem button unresponsive line of code:

addactionlistener(listener) 

how jbuttons print integers in jtextfield? have gotten work before, have since failed work again after adding in more user friendly line of code:

 private static final string[][] standard_btn_texts =  {     {"1", "2", "3"},     {"4", "5", "6"},     {"7", "8", "9"},     { "0" } 

can point me in right direction? appreciated!

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.jframe; import java.awt.event.actionlistener; import java.awt.event.actionevent; import java.awt.event.keyevent; import javax.swing.abstractbutton; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.flowlayout; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.swingconstants; import javax.swing.icon; import javax.swing.imageicon; import javax.swing.jpasswordfield;  public class terminalatm extends jframe { private jpanel panel; public final jpasswordfield passwordfield = new jpasswordfield(2); private static final string[][] standard_btn_texts =  {     {"1", "2", "3"},     {"4", "5", "6"},     {"7", "8", "9"},     { "0" } }; private static final int gap = 5; private static final font btn_font = new font(font.dialog, font.bold, 20); public jbutton jbtone = new jbutton(standard_btn_texts[0][0]);  private jtextfield jtfnumber1 = new jtextfield(8);//define number field  public terminalatm() {            setdefaultcloseoperation(jframe.exit_on_close);     setlocationrelativeto(null);       jpanel standardpanel = createbtnpanel(standard_btn_texts, "keypad");     jpanel buttonpanel = new jpanel();     buttonpanel.setlayout(new gridlayout(0, 1));     buttonpanel.add(jtfnumber1, borderlayout.north);     buttonpanel.add(standardpanel, borderlayout.south);        btnlistener listener = new btnlistener();     jbtone.addactionlistener(listener);      textfieldhandler handler = new textfieldhandler();     passwordfield.addactionlistener(handler);      add(buttonpanel, borderlayout.line_start);     setsize(450, 500);     setvisible(true); }  //create unique rows of buttons private jpanel createbtnpanel(string[][] texts, string title) {     jpanel btnpanel = new jpanel();     int rows = texts.length;     int cols = texts[0].length;     btnpanel.setlayout(new gridlayout(rows, cols, gap, gap));     (int row = 0; row < texts.length; row++) {         (int col = 0; col < texts[row].length; col++) {             jbutton btn = new jbutton(texts[row][col]);             btn.setfont(btn_font);             btnpanel.add(btn);         }     }     btnpanel.setborder(borderfactory.createtitledborder(title));     return btnpanel;   }     private class textfieldhandler implements actionlistener  {    @override   public void actionperformed(actionevent event)   {   string string = "";   if(event.getsource()==passwordfield)  string = string.format("textfield1: %s", event.getactioncommand());  }  }   /**** create button listener , action listener ****/  class btnlistener implements actionlistener  {     @override  public void actionperformed(actionevent e) {       /* set each button action event */       /* button 1 brevity */    int int1=0;  if(e.getsource().equals(jbtone)) {      int1 = 1;   passwordfield.settext(string.valueof(int1));    }  }  }   public static void main(string[] args) {     swingutilities.invokelater(new runnable()     {     public void run()     {     new terminalatm();     }     });    }  }//endterminalatm 

in following code got button listener respond , output text of clicked button show in text field. changes documented starting /****, explain did.

/*  * change template, choose tools | templates  * , open template in editor.  */ package logging; import java.awt.borderlayout; import java.awt.font; import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener;  import javax.swing.borderfactory; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jpasswordfield; import javax.swing.jtextfield; import javax.swing.swingutilities;  public class terminalatm extends jframe {     private jpanel panel;     public final jpasswordfield passwordfield = new jpasswordfield(2);     private static final string[][] standard_btn_texts =         {         {"1", "2", "3"},         {"4", "5", "6"},         {"7", "8", "9"},         { "0" }         };     private static final int gap = 5;     private static final font btn_font = new font(font.dialog, font.bold, 20);     /**** purpose of jbutton ? */     public jbutton jbtone = new jbutton(standard_btn_texts[0][0]);     private jtextfield jtfnumber1 = new jtextfield(8);//define number field      public terminalatm()     {         setdefaultcloseoperation(jframe.exit_on_close);         setlocationrelativeto(null);          jpanel standardpanel = createbtnpanel(standard_btn_texts, "keypad");         jpanel buttonpanel = new jpanel();         buttonpanel.setlayout(new gridlayout(0, 1));         buttonpanel.add(jtfnumber1, borderlayout.north);         buttonpanel.add(standardpanel, borderlayout.south);          /**** action listener should go on button pressed          see createbtnpanel  */ //      btnlistener listener = new btnlistener(); //      jbtone.addactionlistener(listener);          /**** purpose of jpasswordfield ?          not being added jpanel */         textfieldhandler handler = new textfieldhandler();         passwordfield.addactionlistener(handler);          add(buttonpanel, borderlayout.line_start);         setsize(450, 500);         setvisible(true);     }      //create unique rows of buttons     private jpanel createbtnpanel(string[][] texts, string title) {         jpanel btnpanel = new jpanel();         int rows = texts.length;         int cols = texts[0].length;         btnpanel.setlayout(new gridlayout(rows, cols, gap, gap));          /**** create listener */         btnlistener listener = new btnlistener();         (string[] text : texts) {             (string element : text) {                 jbutton btn = new jbutton(element);                 btn.setfont(btn_font);                  /**** add listener each button*/                 btn.addactionlistener(listener);                 btnpanel.add(btn);             }         }         btnpanel.setborder(borderfactory.createtitledborder(title));         return btnpanel;     }       private class textfieldhandler implements actionlistener     {          @override         public void actionperformed(actionevent event)         {             string string = "";              if(event.getsource()==passwordfield) {                 string = string.format("textfield1: %s", event.getactioncommand());             }         }     }      /**** create button listener , action listener ****/     class btnlistener implements actionlistener     {         @override         public void actionperformed(actionevent e)         {              /* set each button action event */             /* button 1 brevity */              /**** purpose of ?   int int1=0; */              /****  event generated button created in              createbtnpanel e.getsource()  can not equal              jbtone. should instance of jbutton  */              if(e.getsource() instanceof jbutton)             {                 /**** jbutton clicked */                 jbutton button = (jbutton) e.getsource() ;                 /**** display text on text field */                 jtfnumber1.settext(button.gettext());             }         }     }       public static void main(string[] args)     {         swingutilities.invokelater(new runnable()         {             @override             public void run()             {                 /**** new multiplepanels(); un defined */                 new terminalatm();             }         });     }  }//endterminalatm 

i need better understand functionality want achieve password field , action listener, can try further, if needed. (0:


Comments