java - Sorting Table is wrong when the sort button be pressed more than once? -


i have problem here. create program add data table , sort when press button. when press sort button once, isn't wrong. when press again wrong. why? please me. code.

nama class

public class nama  {     private string nama;     private int index;      public nama(string n,int i){         nama=n;index=i;     }     void setdata(string n,int i){         nama=n;index=i;     }     string nama(){         return nama;     }     int ind(){         return index;     }       public string tostring(){         return(string.format("%s %d", nama,index));     }   } 

mergesort class

    import java.util.*;     public class mergesorts{           public void merge_sort(int low,int high,nama [] a){             int mid;             if(low<high) {                    mid=(low+high)/2;                    merge_sort(low,mid,a);                    merge_sort(mid+1,high, a);                    merge(low,mid,high,a);             }         }         public void merge(int low,int mid,int high,nama [] a){             int h,i,j,k;             nama b[]=new nama[50];             h=low;             i=low;             j=mid+1;              while((h<=mid)&&(j<=high)){                 if(a[h].nama().comparetoignorecase(a[j].nama())<0){                     b[i]=a[h];                     h++;                 }                  else{                     b[i]=a[j];                     j++;                 }                  i++;             }             if(h>mid){                 for(k=j;k<=high;k++){                     b[i]=a[k];                     i++;                 }             }             else{                 for(k=h;k<=mid;k++){                     b[i]=a[k];                     i++;                 }             }             for(k=low;k<=high;k++) a[k]=b[k];         }         public mergesorts() {         }      } 

panel class

/*  * change template, choose tools | templates  * , open template in editor.  */   import java.awt.dimension; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.vector; import javax.swing.*; import javax.swing.table.defaulttablemodel;  /**  *  * @author kareem  */ public class panel extends jpanel implements actionlistener{     jtable table;     jtextfield tf1,tf2,tf3,tf4;     jbutton b1,b2,b3,b4,b5,b6,b7;     vector rows,columns,temp;     defaulttablemodel tabmodel;     string[]data = new string[3];     string [] column = {"nama", "nim", "ip"};     nama[] n,nim,ip;     mergesorts ms;     int c=0,index=0;      public panel(){         this.setbounds(0,0,1280, 800);         this.setlayout(null);         inatf();         inatab();         inabut();          n= new nama[50];         nim= new nama[50];         ip= new nama[50];         ms=  new mergesorts();         this.setvisible(true);     }      public void inatab(){                         rows=new vector();                 columns= new vector();                 temp= new vector();                   addcolumns(column);              tabmodel=new defaulttablemodel();             tabmodel.setdatavector(rows,columns);              table = new jtable(tabmodel);             table.setpreferredscrollableviewportsize(new                 dimension(500, 70));             table.setfillsviewportheight(true);             table.setbounds(100,100,200,200);             jscrollpane scroll = new jscrollpane(table);             scroll.setbounds(50,50,400,400);             add(scroll);      }     public void inabut(){         b1=new jbutton("add row");         b1.setbounds(50,600,90,25);         add(b1);         b1.addactionlistener(this);          b2=new jbutton("delete row");         b2.setbounds(170,600,90,25);         add(b2);         b2.addactionlistener(this);          b3=new jbutton("sortname");         b3.setbounds(290,600,120,25);         add(b3);         b3.addactionlistener(this);         b5=new jbutton("sortnim");         b5.setbounds(290,650,120,25);         add(b5);         b5.addactionlistener(this);         b6=new jbutton("sortip");         b6.setbounds(290,700,120,25);         add(b6);         b6.addactionlistener(this);          b4=new jbutton("reset");         b4.setbounds(170,650,90,25);         add(b4);         b4.addactionlistener(this);     }      public void inatf(){         tf1=new jtextfield();         tf1.setbounds(640,50,90,25);         add(tf1);          jlabel l1= new jlabel("nama \t: ");         l1.setbounds(530,50,90,25);         add(l1);          tf2=new jtextfield();         tf2.setbounds(640,80,90,25);         add(tf2);          jlabel l2= new jlabel("nim     : ");         l2.setbounds(530,80,90,25);         add(l2);          tf3=new jtextfield();         tf3.setbounds(640,110,90,25);         add(tf3);          jlabel l3= new jlabel("ipk      : ");         l3.setbounds(530,110,90,25);         add(l3);          tf4=new jtextfield();         tf4.setbounds(640,140,90,25);         add(tf4);          jlabel l4= new jlabel("hapus baris ke ");         l4.setbounds(530,140,120,25);         add(l4);     }          public void addrow()          {                 vector r;                 r = createblankelement();                 rows.addelement(r);                  table.addnotify();         }         public void addrow(string [] data)          {                        vector r=new vector();                 r = isi(data);                 rows.addelement(r);                  table.addnotify();         }          public vector createblankelement()          {                 vector t = new vector();                 t.addelement((string) " ");                 t.addelement((string) " ");                 t.addelement((string) " ");                  return t;         }         public vector isi(string[] data) {                 vector t = new vector();                      for(int j=0;j<3;j++){                         t.addelement((string) data[j]);                     }                   return t;         }         public void addcolumns(string[] colname) {                 for(int i=0;i<colname.length;i++)                 columns.addelement((string) colname[i]);         }         void deleterow(int index) {              if(index!=-1) {                  rows.removeelementat(index);                 table.addnotify();                }           }        @override     public void actionperformed(actionevent e) {         try{         if(e.getsource()==b1){             data[0]=tf1.gettext()+" "+index;             n[index]=new nama(data[0],index);             data[1]=tf2.gettext();             nim[index]=new nama(data[1],index);             data[2]=tf3.gettext()+rows.size();             ip[index]=new nama (data[2],index);             c=c+1;             index=index+1;             addrow(data);         }         if(e.getsource()==b2){             int i;             i=integer.parseint(tf4.gettext());              deleterow(i);  //            for(;i<rows.size();i++){ //                n[i]=n[i+1]; //            }          }         if(e.getsource()==b3){            ms.merge_sort(0, rows.size()-1, n);           temp.setsize(rows.size());           for(int i=0;i<index;i++){                 temp.set(i, rows.get(n[i].ind()));             }            for(int i=0;i<index;i++){                 rows.set(i, temp.get(i));            }         }          if(e.getsource()==b4){             rows.setsize(0);             temp.setsize(0);             for(int i=0;i<index;i++)n[i]=null;             index=0;         }         if(e.getsource()==b5){              ms.merge_sort(0, rows.size()-1, nim);              temp.setsize(rows.size());            for(int i=0;i<rows.size();i++){                 temp.set(i, rows.get(nim[i].ind()));             }             for(int i=0;i<rows.size();i++){                 rows.set(i, temp.get(i));            }         }         if(e.getsource()==b6){              ms.merge_sort(0, rows.size()-1, ip);              temp.setsize(rows.size());            for(int i=0;i<rows.size();i++){                 temp.add(i, rows.get(ip[i].ind()));             }             for(int i=0;i<rows.size();i++){                 rows.set(i, temp.get(i));            }         }            repaint();           }         catch (throwable t){          joptionpane.showmessagedialog(null, "aaaaaa");            }      }  } 

frame class

/*  * change template, choose tools | templates  * , open template in editor.  */  import javax.sound.sampled.audioinputstream; import javax.sound.sampled.audiosystem; import javax.sound.sampled.clip; import javax.swing.jframe; import javax.swing.joptionpane; import javax.swing.jscrollpane; import javax.swing.jtable; import javax.swing.table.defaulttablemodel;  /**  *  * @author kareem  */ public class frame extends jframe {      public frame(){         super("penghitung gaji");         this.setdefaultcloseoperation(jframe.exit_on_close);         this.setlayout(null);         this.setsize(1280, 800);         this.getcontentpane().add(new panel());         this.setvisible(true);      }      public static void main(string[] args) {         frame frame = new frame();     } } 

thanks. , sorry bad english.

dashing through snow in one-horse open sleigh o'er fields go laughing way  bells on bobtail ring' making spirits bright fun ride , sing sleighing song tonight!      jingle bells, jingle bells,     jingle way.     oh! fun ride     in one-horse open sleigh.      jingle bells, jingle bells, .... 
  • song singing code, please apologize me if isn't 1 favorite song

  • can't comment or suggesting, excluding used layoutmanager in code, walked path of least resistance, endless lazyness

enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here

. . .

from code

.

import java.awt.borderlayout; import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.arraylist; import java.util.list; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtable; import javax.swing.jtextfield; import javax.swing.listselectionmodel; import javax.swing.rowsorter.sortkey; import javax.swing.scrollpaneconstants; import javax.swing.sortorder; import javax.swing.swingconstants; import javax.swing.border.emptyborder; import javax.swing.table.defaulttablecellrenderer; import javax.swing.table.defaulttablemodel; import javax.swing.table.tablerowsorter;  public class myframe {      private jframe frame = new jframe();     private jtable table;     private jpanel buttonpanel = new jpanel();     private jpanel buttonpanelsouth = new jpanel();     private jpanel textfieldpanel = new jpanel();     private jpanel northpanel = new jpanel();     private jpanel centerpanel = new jpanel();     private jlabel l1, l2, l3, l4;     private jtextfield tf1, tf2, tf3, tf4;     private jbutton b1, b2, b3, b4, b5, b6, b7;     private string[] columnnames = {"nama", "nim", "ip", "hapus baris ke"};     private object[][] data = {         {"igor", "b01_125-358", "1.124.01.125", true},         {"lenka", "b21_002-242", "21.124.01.002", true},         {"peter", "b99_001-358", "99.124.01.001", false},         {"zuza", "b12_100-242", "12.124.01.100", true},         {"jozo", "bus_011-358", "99.124.01.011", false},         {"nora", "b09_154-358", "9.124.01.154", false},         {"xantipa", "b01_001-358", "1.124.01.001", false},};     private defaulttablemodel model = new defaulttablemodel(data, columnnames) {         private static final long serialversionuid = 1l;          @override         public boolean iscelleditable(int row, int column) {             switch (column) {                 case 3:                     return true;                 default:                     return false;             }         }          @override         public class getcolumnclass(int column) {             return getvalueat(0, column).getclass();         }     };      public myframe() {         table = new jtable(model);         table.setautocreaterowsorter(true);         table.setpreferredscrollableviewportsize(table.getpreferredsize());         table.setfillsviewportheight(true);         table.getselectionmodel().setselectionmode(                 listselectionmodel.single_selection);         defaulttablecellrenderer stringrenderer =                 (defaulttablecellrenderer) table.getdefaultrenderer(string.class);         stringrenderer.sethorizontalalignment(swingconstants.center);         jscrollpane pane = new jscrollpane(table,                 scrollpaneconstants.vertical_scrollbar_as_needed,                 scrollpaneconstants.horizontal_scrollbar_as_needed);         centerpanel.setlayout(new borderlayout(10, 10));         centerpanel.setborder(new emptyborder(10, 10, 10, 10));         centerpanel.add(pane);         centerpanel.add(pane); //                 b1 = new jbutton("add row");         b1.addactionlistener(new actionlistener() {             @override             public void actionperformed(actionevent e) {                 model.addrow(new object[]{(tf1.gettext()).trim(),                             (tf2.gettext()).trim(), (tf3.gettext()).trim(), true});             }         });         b2 = new jbutton("delete row");         b2.addactionlistener(new actionlistener() {             @override             public void actionperformed(actionevent e) {                 int rowtodelete = 0;                 int rowtomodel = 0;                 if (table.getselectedrow() > -1) {                     rowtodelete = table.getselectedrow();                     rowtomodel = table.convertrowindextomodel(rowtodelete);                     model.removerow(rowtomodel);                 }             }         });         b3 = new jbutton("reset");         b3.addactionlistener(new actionlistener() {             @override             public void actionperformed(actionevent e) {                 table.getrowsorter().setsortkeys(null);             }         });         b4 = new jbutton("sortname");         b4.addactionlistener(new actionlistener() {             @override             public void actionperformed(actionevent e) {                 table.getrowsorter().togglesortorder(0);             }         });         b5 = new jbutton("sortnim");         b5.addactionlistener(new actionlistener() {             @override             public void actionperformed(actionevent e) {                 tablerowsorter rowsorter = (tablerowsorter) table.getrowsorter();                 list<sortkey> sortkeys = new arraylist<sortkey>();                 sortkey sortkey = new sortkey(1, sortorder.ascending);                 sortkeys.add(sortkey);                 rowsorter.setsortkeys(sortkeys);                 rowsorter.sort();             }         });         b6 = new jbutton("sortip");         b6.addactionlistener(new actionlistener() {             @override             public void actionperformed(actionevent e) {                 tablerowsorter rowsorter = (tablerowsorter) table.getrowsorter();                 list<sortkey> sortkeys = new arraylist<sortkey>();                 sortkey sortkey = new sortkey(2, sortorder.descending);                 sortkeys.add(sortkey);                 sortkey sortkey1 = new sortkey(1, sortorder.ascending);                 sortkeys.add(sortkey1);                 sortkey sortkey2 = new sortkey(0, sortorder.unsorted);                 sortkeys.add(sortkey2);                 rowsorter.setsortkeys(sortkeys);                 rowsorter.sort();             }         });         b7 = new jbutton("sortip");         buttonpanel.setlayout(new gridlayout(1, 0, 50, 0));         buttonpanel.setborder(new emptyborder(2, 10, 2, 10));         buttonpanel.add(b1);         buttonpanel.add(b2); //         buttonpanelsouth.setlayout(new gridlayout(1, 4, 5, 5));         buttonpanelsouth.add(b3);         buttonpanelsouth.add(b7);         b7.setvisible(false);         buttonpanelsouth.add(b4);         buttonpanelsouth.add(b5);         buttonpanelsouth.add(b6);         centerpanel.add(buttonpanelsouth, borderlayout.south);  //         l1 = new jlabel("nama : ", jlabel.right);         tf1 = new jtextfield();         l2 = new jlabel("nim  : ", jlabel.right);         tf2 = new jtextfield();         l3 = new jlabel("ipk : ", jlabel.right);         tf3 = new jtextfield();         l4 = new jlabel("hapus baris ke :", jlabel.right);         tf4 = new jtextfield();         textfieldpanel.setlayout(new gridlayout(4, 2, 10, 10));         textfieldpanel.setborder(new emptyborder(10, 10, 10, 10));         textfieldpanel.add(l1);         textfieldpanel.add(tf1);         textfieldpanel.add(l2);         textfieldpanel.add(tf2);         textfieldpanel.add(l3);         textfieldpanel.add(tf3);         textfieldpanel.add(l4);         textfieldpanel.add(tf4); //         northpanel.setlayout(new borderlayout());         northpanel.add(textfieldpanel);         northpanel.add(buttonpanel, borderlayout.south); //         frame.add(northpanel, borderlayout.north);         frame.add(centerpanel);         frame.setdefaultcloseoperation(jframe.exit_on_close);         frame.pack();         frame.setvisible(true);     }      public static void main(string[] arg) {         java.awt.eventqueue.invokelater(new runnable() {             @override             public void run() {                 myframe myframe = new myframe();             }         });     } } 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -