Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8299724

JTable cell editing should cancel on 'tableChanged' affecting editor-target row

XMLWordPrintable

      A DESCRIPTION OF THE PROBLEM :
      When table cell is being edited, firing table.tableChanged(new TableModelEvent(${tableModel})) (with first row = 0 and last row = Integer.MAX) leaves editor active.

      If there are less rows in new data set than editor's target row, editor remains active but not visible. This is especially error-prone when editing bean properties 'name-value' model, where each value in column could have own class: class cast error ruins both commit and cancel.

      In case editor target cell is affected by data change, it should be cancelled.


      CUSTOMER SUBMITTED WORKAROUND :
      JTable subclass with overriden 'tableChanged()':

          @Override
          public void tableChanged(TableModelEvent e){
              // Cancel editing if target affected
              if(this.editingRow >= 0 && this.editingRow >= e.getFirstRow() && this.editingRow <= e.getLastRow()){
                  this.removeEditor();
              }
              super.tableChanged(e);
          }

      FREQUENCY : always


            psadhukhan Prasanta Sadhukhan
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: