java - JTable removing row gives ArrayOutofBounds exception : 2>=2 -
public static void main(string[] args) { // todo auto-generated method stub object[][] tdata ={new object[]{"1","b","e","f"},new object[]{"2","*","3","4"},new object[]{"3","@","#","$"}}; object[] tname = {"#1","#2","#3","#4"}; defaulttablemodel dtm = new defaulttablemodel(); dtm.setdatavector(tdata, tname); jtable jta = new jtable(dtm); jta.setrowselectionallowed(false); jta.getcolumnmodel().getcolumn(0).setcelleditor(new mbuttoneditor()); jframe jfr = new jframe(); jfr.setsize(800, 800); jfr.setlayout(new flowlayout()); jfr.add(new jscrollpane(jta)); jfr.setdefaultcloseoperation(jframe.exit_on_close); jfr.setvisible(true); } class mbuttoneditor extends defaultcelleditor{ private int cur_row; private int cur_col; private jtable cur_tab; private jbutton jbut; mactionlistener mactl; public mbuttoneditor() { super(new jtextfield()); this.setclickcounttostart(1); initbutton(); } private void initbutton() { jbut = new jbutton(); } @override public component gettablecelleditorcomponent(jtable table, object value, boolean isselected, int row, int column) { cur_row = row; cur_col = column; cur_tab = table; mactl = new mactionlistener(this.cur_row,this.cur_col,this.cur_tab); jbut.addactionlistener(mactl); this.jbut.settext(value == null ? "" : string.valueof(value)); return jbut; } @override public object getcelleditorvalue() { return this.jbut.gettext(); } } class mactionlistener implements actionlistener { private int cur_row; private int cur_col; private jtable cur_tab; defaulttablecellrenderer backgroundcolor; mactionlistener(int row,int column,jtable table) { cur_row = row; cur_col = column; cur_tab = table; backgroundcolor = new defaulttablecellrenderer(); backgroundcolor.setbackground(color.red); } @override public void actionperformed(actionevent e) { cur_tab.getcolumnmodel().getcolumn(1).setcellrenderer(backgroundcolor); defaulttablemodel dtm = (defaulttablemodel) cur_tab.getmodel(); dtm.removerow(cur_row); system.out.println(dtm.getcolumncount()); } }
stack trace:
exception in thread "awt-eventqueue-0" java.lang.arrayindexoutofboundsexception: 2 >= 2 @ java.util.vector.elementat(vector.java:470) @ javax.swing.table.defaulttablemodel.setvalueat(defaulttablemodel.java:665) @ javax.swing.jtable.setvalueat(jtable.java:2741) @ javax.swing.jtable.editingstopped(jtable.java:4723) @ javax.swing.abstractcelleditor.fireeditingstopped(abstractcelleditor.java:141) @ javax.swing.defaultcelleditor$editordelegate.stopcellediting(defaultcelleditor.java:368) @ javax.swing.defaultcelleditor.stopcellediting(defaultcelleditor.java:233) @ javax.swing.plaf.basic.basictableui$handler.mousepressed(basictableui.java:1010) @ java.awt.awteventmulticaster.mousepressed(awteventmulticaster.java:280) @ java.awt.component.processmouseevent(component.java:6513) @ javax.swing.jcomponent.processmouseevent(jcomponent.java:3320) @ java.awt.component.processevent(component.java:6281) @ java.awt.container.processevent(container.java:2229) @ java.awt.component.dispatcheventimpl(component.java:4872) @ java.awt.container.dispatcheventimpl(container.java:2287) @ java.awt.component.dispatchevent(component.java:4698) @ java.awt.lightweightdispatcher.retargetmouseevent(container.java:4832) @ java.awt.lightweightdispatcher.processmouseevent(container.java:4489) @ java.awt.lightweightdispatcher.dispatchevent(container.java:4422) @ java.awt.container.dispatcheventimpl(container.java:2273) @ java.awt.window.dispatcheventimpl(window.java:2719) @ java.awt.component.dispatchevent(component.java:4698) @ java.awt.eventqueue.dispatcheventimpl(eventqueue.java:735) @ java.awt.eventqueue.access$200(eventqueue.java:103) @ java.awt.eventqueue$3.run(eventqueue.java:694) @ java.awt.eventqueue$3.run(eventqueue.java:692) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:76) @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:87) @ java.awt.eventqueue$4.run(eventqueue.java:708) @ java.awt.eventqueue$4.run(eventqueue.java:706) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:76) @ java.awt.eventqueue.dispatchevent(eventqueue.java:705) @ java.awt.eventdispatchthread.pumponeeventforfilters(eventdispatchthread.java:242) @ java.awt.eventdispatchthread.pumpeventsforfilter(eventdispatchthread.java:161) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(eventdispatchthread.java:150) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:146) @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:138) @ java.awt.eventdispatchthread.run(eventdispatchthread.java:91)
Comments
Post a Comment