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
. . .
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
Post a Comment