dynamically adding checkboxes in java swing -


reference given code..i can access print statement inside if statement in for-loop(inside try-catch block) checkboxes not adding. using revalidating , repaint function still not working. loop inside try-catch block running except adding jscrollpane. wrong?

 /*  * change license header, choose license headers in project properties.  * change template file, choose tools | templates  * , open template in editor.  */ package com.anurag; import com.anurag.httpurlconnectionexample; import java.awt.dimension; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.io.file;  import javax.swing.box; import javax.swing.jbutton; import javax.swing.jcheckbox; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jscrollpane; import javax.swing.jtextfield; import jxl.cell; import jxl.sheet; import jxl.workbook;  /**  *  * @author anurag  */ public class maingui {     static jframe frame = new jframe("rest testing");      public static void main(string args[]) {  frame.setlayout(new flowlayout()); frame.setsize(500, 500); frame.setdefaultcloseoperation(jframe.exit_on_close);   final jtextfield path = new jtextfield("getresponse.xls");    frame.add(path);     jbutton upload = new jbutton("upload");     frame.add(upload);      upload.addactionlistener(new actionlistener(){          @override         public void actionperformed(actionevent arg0) {                 jscrollpane jscrlplabel = new jscrollpane(new jlabel(              "<html>a<br>b<br>c<br>d<br>e<br>f<br>g<br>h<br></html>"));              jscrlplabel.setpreferredsize(new dimension(200, 100));              frame.add(jscrlplabel);              frame.revalidate();              frame.repaint();          try{                  system.out.println(path.gettext());              httpurlconnectionexample http  = new httpurlconnectionexample();              int noofrows = http.setpath(path.gettext());                workbook workbook = workbook.getworkbook(new file(path.gettext()));               sheet sheet = workbook.getsheet(0);               cell cell= sheet.findcell("s. no.");               int col=cell.getcolumn();              int row=cell.getrow();              row=row+2;              //system.out.println("row="+row+"col="+col);              for(int i=row;i<noofrows;i++,row++)              {                     int p=http.readfile(col,row);                  if(p==1){                        jcheckbox cb = new jcheckbox("checkbox");                       jscrollpane jscrlp = new jscrollpane(cb);                       jscrlp.setpreferredsize(new dimension(140, 95));                       frame.add(jscrlp);                       frame.revalidate();                      frame.repaint();                         system.out.println("checkbox created");                   }                    else if(p==2){                      jcheckbox cb1 = new jcheckbox("checkbox ");                      box box = box.createverticalbox();                      box.add(cb1);                      jscrollpane jscrollpane1 = new jscrollpane(box);                      jscrollpane1.setpreferredsize(new dimension(140, 95));                      frame.add(jscrollpane1);                      frame.revalidate();                      frame.repaint();                       system.out.println("checkbox created textfield");                  }              }              http.getdata();          }catch(exception e){system.out.println("exception "+e);}              }     });           //joptionpane.showmessagedialog(null, "done", "alert", width);  jcheckbox = new jcheckbox("a"); jcheckbox b = new jcheckbox("b"); jlabel label = new jlabel("option");  box box = box.createverticalbox(); box.add(label); box.add(a); box.add(b);  jscrollpane jscrlpbox = new jscrollpane(box); jscrlpbox.setpreferredsize(new dimension(240, 150)); //f.add(jscrlplabel); frame.add(jscrlpbox);  frame.setvisible(true); }  } 

start having read through creating gui jfc/swing, laying out components within container, concurrency in swing , how use scroll panes

  • box not "visible" component, it's meant feature used boxlayout
  • you're adding multiple jscrollpanes single view, kind of feels weird me
  • should avoid use of set(preferred|maximum|minimum)size methods in java swing?
  • you're updating ui within event dispatching thread, process you're making decisions may take time run, make ui it's doing nothing until actionperformed method exist
  • there's little point in calling revaldiate time, leave until have finished updating whole ui, provide better performance in long run

start creating jpanel wrap jscrollpane around, add jscrollpane base ui

as required, add , remove components jpanel, example...

example

public class maingui {      public static void main(string args[]) {         new maingui();     }      private jframe frame = new jframe("rest testing");     private jpanel checkboxes;      public maingui() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                     ex.printstacktrace();                 }                  frame.setsize(500, 500);                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 final jtextfield path = new jtextfield("getresponse.xls");                  jpanel fields = new jpanel();                 fields.add(path);                  jbutton upload = new jbutton("upload");                 fields.add(upload);                  frame.add(fields, borderlayout.north);                  checkboxes = new jpanel(new gridbaglayout());                 jscrollpane scrollpane = new jscrollpane(checkboxes);                  frame.add(scrollpane);                  upload.addactionlistener(new actionlistener() {                     @override                     public void actionperformed(actionevent arg0) {                          gridbagconstraints gbc = new gridbagconstraints();                         gbc.gridwidth = gridbagconstraints.remainder;                         gbc.anchor = gridbagconstraints.west;                         gbc.weightx = 1;                          checkboxes.add(new jlabel("<html>a<br>b<br>c<br>d<br>e<br>f<br>g<br>h<br></html>"), gbc);                          try {                             int noofrows = 100;                             (int row = 0; row < noofrows; row++, row++) {                                 int p = (int) ((math.random() * 2) + 1);                                 system.out.println(p);                                 if (p == 1) {                                      jcheckbox cb = new jcheckbox("checkbox");                                     checkboxes.add(cb, gbc);                                  } else if (p == 2) {                                      jcheckbox cb1 = new jcheckbox("checkbox ");                                     jpanel stuff = new jpanel();                                     stuff.add(cb1);                                     stuff.add(new jtextfield(10));                                     checkboxes.add(stuff, gbc);                                  }                             }                          } catch (exception e) {                             system.out.println("exception " + e);                         }                          checkboxes.revalidate();                         checkboxes.repaint();                     }                 });                  //joptionpane.showmessagedialog(null, "done", "alert", width);                 jcheckbox = new jcheckbox("a");                 jcheckbox b = new jcheckbox("b");                 jlabel label = new jlabel("option");                  jpanel stuff = new jpanel();                 stuff.add(label);                 stuff.add(a);                 stuff.add(b);                 gridbagconstraints gbc = new gridbagconstraints();                 gbc.gridwidth = gridbagconstraints.remainder;                 gbc.anchor = gridbagconstraints.west;                 gbc.weightx = 1;                 checkboxes.add(stuff, gbc);                  frame.pack();                 frame.setlocationrelativeto(null);                 frame.setvisible(true);              }         });     }  } 

now, i'm not 100% sure, might find using jtable produces you're after. how use tables


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -