venkat9999
asked on
JTable cell editing problem
Hi ,
I have a problem here that I created JTable by using my own TableModel and in this table only two columns are editable and I have a method to save changes in that editable cells and I am calling this method in editingStopped() method but this method never called.
I have one more point to tell u that I am calling isCellEditable() and getCellEditor() methods in my table class and if I commented getCellEditor() then it is working properly.
here I am sending my code too.
I would be appreciated if any one could help me in this.
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
import com..businessobjects.*;
import com..businessobjects.looku ps.*;
import com..ui.*;
import com..ui.communication.*;
import com..ui.core.*;
import com..ui.util.*;
/**
* Insert the type's description here.
* Creation date: (9/17/01 4:54:31 PM)
* @author: Lois Buwalda
*/
public class DisputeRevenueDialog extends MontageDialog {
// list of revenue items
AbstractList revenueList;
// Table
private DisputeRevenueTable revenueTable;
// Scrollable pane for table
ScrollableTablePane scrollablePane;
// Buttons
private MontageButton totalBillButton;
private MontageButton totalRateButton;
private MontageButton cancelButton;
private MontageButton okButton;
// Table Models
RevenueTableModel revenueModel = new RevenueTableModel();
static MontageCurrency newValue;
class RevenueTableModel extends AbstractListTableModel {
public static final int RATE_COLUMN = 0;
public static final int DATE_COLUMN = 1;
public static final int PECO_REVENUE_COLUMN = 2;
public static final int PECO_DISPUTE_COLUMN = 3;
public static final int SUPPLIER_REVENUE_COLUMN = 4;
public static final int SUPPLIER_DISPUTE_COLUMN = 5;
public static final int SUPPLIER_COLUMN = 6;
public RevenueTableModel(Abstract List revenueRecords) {
this();
setData(revenueRecords);
}
public RevenueTableModel() {
super(new String[] { "Rate", "Date", "PECO Revenue", "PECO Disp. Amt", "Supplier Revenue", "Supplier Disp. Amt", "Supplier" });
}
public Object getValueAt(int row, int col) {
AbstractList data = getData();
DisputedRevenue record = (DisputedRevenue) data.get(row);
Object value;
switch (col) {
case RATE_COLUMN :
value = record.getRateCode();
break;
case DATE_COLUMN :
value = record.getDate();
break;
case SUPPLIER_COLUMN :
value = record.getSupplierName();
break;
case PECO_REVENUE_COLUMN :
value = record.getPecoRevenue();
break;
case PECO_DISPUTE_COLUMN :
value = record.getPecoDisputedAmou nt();
break;
case SUPPLIER_REVENUE_COLUMN :
value = record.getSupplierRevenue( );
break;
case SUPPLIER_DISPUTE_COLUMN :
value = record.getSupplierDisputed Amount();
break;
default :
value = "";
}
return value;
}
}
class DisputeRevenueTable extends ScrollableTable {
// pv.jfcx.PVTableEditor doubleEditor = new pv.jfcx.PVTableEditor(new MontageNumericField(), pv.jfcx.JPVTable.DOUBLE);
pv.jfcx.PVTableEditor doubleEditor = new pv.jfcx.PVTableEditor(new MontageCurrency(), pv.jfcx.JPVTable.CURRENCY) ;
public DisputeRevenueTable() {
super(revenueModel, 25);
}
protected DefaultTableColumnModel getDefaultColumnModel() {
columnModel = new DefaultTableColumnModel();
TableModel tableModel = this.getModel();
columnModel.addColumn(newC olumn(0, 55, tableModel.getColumnName(0 )));
columnModel.addColumn(newC olumn(1, 55, tableModel.getColumnName(1 ), MontageCellRendererFactory .getDateRe nderer())) ;
columnModel.addColumn(newC olumn(2, 110, tableModel.getColumnName(2 ), MontageCellRendererFactory .getNumber Renderer() ));
columnModel.addColumn(newC olumn(3, 110, tableModel.getColumnName(3 ), MontageCellRendererFactory .getNumber Renderer() ));
columnModel.addColumn(newC olumn(4, 110, tableModel.getColumnName(4 ), MontageCellRendererFactory .getNumber Renderer() ));
columnModel.addColumn(newC olumn(5, 110, tableModel.getColumnName(5 ), MontageCellRendererFactory .getNumber Renderer() ));
columnModel.addColumn(newC olumn(6, 230, tableModel.getColumnName(6 )));
return columnModel;
}
// TableColumn tableColumn = getColumnModel().getColumn (3);
// tableColumn.setCellEditor( doubleEdit or);
/* public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == RevenueTableModel.PECO_DIS PUTE_COLUM N || columnIndex == RevenueTableModel.SUPPLIER _DISPUTE_C OLUMN)
{TableColumn tableColumn = getColumnModel().getColumn (columnInd ex);
tableColumn.setCellEditor( doubleEdit or);
return true;}
else
return false;
}
*/
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == RevenueTableModel.PECO_DIS PUTE_COLUM N || columnIndex == RevenueTableModel.SUPPLIER _DISPUTE_C OLUMN)
return true;
else
return false;
}
public TableCellEditor getCellEditor(int row, int column) {
if (column == RevenueTableModel.PECO_DIS PUTE_COLUM N || column == RevenueTableModel.SUPPLIER _DISPUTE_C OLUMN)
return doubleEditor;
return super.getCellEditor();
}
/* public void editingCanceled(ChangeEven t e) {
editCellCanceled(this, e);
super.editingCanceled(e);
}
*/
public void editingStopped(ChangeEvent e) {
editCellStopped(this, e);
super.editingStopped(e);
}
/* public void editingStopped(ChangeEvent e) {
pv.jfcx.PVTableEditor editor = new pv.jfcx.PVTableEditor(new MontageCurrency(), pv.jfcx.JPVTable.CURRENCY) ;
if (editor != null) {
Object value = editor.getCellEditorValue( );
setValueAt(value, editingRow, editingColumn);
removeEditor();
}
}
*/
public TableCellRenderer getCellRender(int row, int column) {
TableColumn tableColumn = getColumnModel().getColumn (column);
tableColumn.setCellEditor( doubleEdit or);
TableCellRenderer renderer = tableColumn.getCellRendere r();
if (renderer == null) {
renderer = getDefaultRenderer(getColu mnClass(co lumn));
}
return renderer;
}
}
}
I have a problem here that I created JTable by using my own TableModel and in this table only two columns are editable and I have a method to save changes in that editable cells and I am calling this method in editingStopped() method but this method never called.
I have one more point to tell u that I am calling isCellEditable() and getCellEditor() methods in my table class and if I commented getCellEditor() then it is working properly.
here I am sending my code too.
I would be appreciated if any one could help me in this.
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
import com..businessobjects.*;
import com..businessobjects.looku
import com..ui.*;
import com..ui.communication.*;
import com..ui.core.*;
import com..ui.util.*;
/**
* Insert the type's description here.
* Creation date: (9/17/01 4:54:31 PM)
* @author: Lois Buwalda
*/
public class DisputeRevenueDialog extends MontageDialog {
// list of revenue items
AbstractList revenueList;
// Table
private DisputeRevenueTable revenueTable;
// Scrollable pane for table
ScrollableTablePane scrollablePane;
// Buttons
private MontageButton totalBillButton;
private MontageButton totalRateButton;
private MontageButton cancelButton;
private MontageButton okButton;
// Table Models
RevenueTableModel revenueModel = new RevenueTableModel();
static MontageCurrency newValue;
class RevenueTableModel extends AbstractListTableModel {
public static final int RATE_COLUMN = 0;
public static final int DATE_COLUMN = 1;
public static final int PECO_REVENUE_COLUMN = 2;
public static final int PECO_DISPUTE_COLUMN = 3;
public static final int SUPPLIER_REVENUE_COLUMN = 4;
public static final int SUPPLIER_DISPUTE_COLUMN = 5;
public static final int SUPPLIER_COLUMN = 6;
public RevenueTableModel(Abstract
this();
setData(revenueRecords);
}
public RevenueTableModel() {
super(new String[] { "Rate", "Date", "PECO Revenue", "PECO Disp. Amt", "Supplier Revenue", "Supplier Disp. Amt", "Supplier" });
}
public Object getValueAt(int row, int col) {
AbstractList data = getData();
DisputedRevenue record = (DisputedRevenue) data.get(row);
Object value;
switch (col) {
case RATE_COLUMN :
value = record.getRateCode();
break;
case DATE_COLUMN :
value = record.getDate();
break;
case SUPPLIER_COLUMN :
value = record.getSupplierName();
break;
case PECO_REVENUE_COLUMN :
value = record.getPecoRevenue();
break;
case PECO_DISPUTE_COLUMN :
value = record.getPecoDisputedAmou
break;
case SUPPLIER_REVENUE_COLUMN :
value = record.getSupplierRevenue(
break;
case SUPPLIER_DISPUTE_COLUMN :
value = record.getSupplierDisputed
break;
default :
value = "";
}
return value;
}
}
class DisputeRevenueTable extends ScrollableTable {
// pv.jfcx.PVTableEditor doubleEditor = new pv.jfcx.PVTableEditor(new MontageNumericField(), pv.jfcx.JPVTable.DOUBLE);
pv.jfcx.PVTableEditor doubleEditor = new pv.jfcx.PVTableEditor(new MontageCurrency(), pv.jfcx.JPVTable.CURRENCY)
public DisputeRevenueTable() {
super(revenueModel, 25);
}
protected DefaultTableColumnModel getDefaultColumnModel() {
columnModel = new DefaultTableColumnModel();
TableModel tableModel = this.getModel();
columnModel.addColumn(newC
columnModel.addColumn(newC
columnModel.addColumn(newC
columnModel.addColumn(newC
columnModel.addColumn(newC
columnModel.addColumn(newC
columnModel.addColumn(newC
return columnModel;
}
// TableColumn tableColumn = getColumnModel().getColumn
// tableColumn.setCellEditor(
/* public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == RevenueTableModel.PECO_DIS
{TableColumn tableColumn = getColumnModel().getColumn
tableColumn.setCellEditor(
return true;}
else
return false;
}
*/
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == RevenueTableModel.PECO_DIS
return true;
else
return false;
}
public TableCellEditor getCellEditor(int row, int column) {
if (column == RevenueTableModel.PECO_DIS
return doubleEditor;
return super.getCellEditor();
}
/* public void editingCanceled(ChangeEven
editCellCanceled(this, e);
super.editingCanceled(e);
}
*/
public void editingStopped(ChangeEvent
editCellStopped(this, e);
super.editingStopped(e);
}
/* public void editingStopped(ChangeEvent
pv.jfcx.PVTableEditor editor = new pv.jfcx.PVTableEditor(new MontageCurrency(), pv.jfcx.JPVTable.CURRENCY)
if (editor != null) {
Object value = editor.getCellEditorValue(
setValueAt(value, editingRow, editingColumn);
removeEditor();
}
}
*/
public TableCellRenderer getCellRender(int row, int column) {
TableColumn tableColumn = getColumnModel().getColumn
tableColumn.setCellEditor(
TableCellRenderer renderer = tableColumn.getCellRendere
if (renderer == null) {
renderer = getDefaultRenderer(getColu
}
return renderer;
}
}
}
ASKER
waiting for the reply.
ASKER
waiting for the reply.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I accepted all my previous questions and I am waiting for answer for my current question regarding JTable cellediting problem.I would be appreciated if you answer my new question.
Thanks,
Raj.
Thanks,
Raj.
ASKER
Hi,
I need help in cell editing problem.I post this question long back ,really I don not understand how to assign points ,if really needed I can give more points but I need help as soon as possible.
Thanks,
ven.
I need help in cell editing problem.I post this question long back ,really I don not understand how to assign points ,if really needed I can give more points but I need help as soon as possible.
Thanks,
ven.
2 questions graded
And the last question you graded was 18 months ago.