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

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -