java - How to get the values from JPanel components like drop down, text fields which are getting created on a fly -


i have jpanel consists of dropdown , text field inside jframe. there button in jframe, when user clicks on button, application adds new jpanel same components i.e. drop down , text field. so, have created function gets called on clicking on button using actionlistener.

everything works fine gui side problem when user done adding jpanels , entering values in these drop downs , text fields, click on submit button. upon clicking on submit button, should able fetch values drop downs , text fields. challenge, since using same functions create jpanels, can't call name values since give me last jpanel values.

any suggestion how should go this? have added screenshot of jframe , function create jpanel. appreciated. thanks.

 public static void addpanel(final container pane) {      panel1 = new jpanel();     string text = "<html><b>property" + nooftimes + " :</b></html>";     jlabel label = new jlabel(text);     label.setpreferredsize(new dimension(80, 30));     panel1.add(label);      panel1.add(new jlabel("please enter property"));     defaultcomboboxmodel<string> model = new defaultcomboboxmodel<string>();     model.addelement("value1");     model.addelement("value2");     model.addelement("value3");     model.addelement("value4");     model.addelement("value5");       final jcombobox<string> combobox1 = new jcombobox<string>(model);     autocompletedecorator.decorate(combobox1);     combobox1.setpreferredsize(new dimension(120, 22));     panel1.add(combobox1);      final jtextfield txtfield1 = new jtextfield(             "please enter value here");     txtfield1.setpreferredsize(new dimension(200, 22));     panel1.add(txtfield1);      txtfield1.addfocuslistener(new focuslistener() {         public void focusgained(focusevent e) {             txtfield1.settext("");         }          public void focuslost(focusevent e) {             // nothing         }     });     container.add(panel1);     nooftimes++;      frame.revalidate();     frame.validate();     frame.repaint();     } 

screenshot: **frame_screenshot**}

you return jpanel , store in list<jpanel>. when click submit-button able iterate through jpanels , components.

public class application {      private static list<jpanel> panels = new arraylist<>();     private static container somecontainer = new container();      public static void main(string[] args) {         panels.add(addpanel(somecontainer));         panels.add(addpanel(somecontainer));         panels.add(addpanel(somecontainer));          submit();     }      public static jpanel addpanel(final container pane) {         jpanel panel1 = new jpanel();         // shortened code         final jcombobox<string> combobox1 = new jcombobox<string>();         panel1.add(combobox1);          final jtextfield txtfield1 = new jtextfield("please enter value here");         txtfield1.settext(string.valueof(math.random()));         panel1.add(txtfield1);         return panel1;     }      private static void submit() {         (jpanel panel : panels) {             component[] components = panel.getcomponents();             (component comp : components) {                 // cast comp jcombobox / jtextfield values                 if (comp instanceof jtextfield) {                     jtextfield textfield = (jtextfield) comp;                     system.out.println(textfield.gettext());                 }             }         }     } } 

Comments

Popular posts from this blog

sequelize.js - Sequelize group by with association includes id -

android - Robolectric "INTERNET permission is required" -

java - Android raising EPERM (Operation not permitted) when attempting to send UDP packet after network connection -