Hi Torsten

 

Looking at it very briefly, your indices seem very wrong when firing events. Table row indices start at 0, just like list indices!

 

In your sampe, add should be:

fireTableRowsInserted(getRowCount()-1, getRowCount()-1);

 

In your sampe, remove should be:
fireTableRowsDeleted(row, row);

If you remove row n, it makes no sense to fire an event saying row rowCount() has been removed.

 

Etienne

 

 

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Hofmann, Torsten
Sent: Wednesday, June 14, 2006 7:23 AM
To: [email protected]
Subject: [ULC-developer] Error inserting row in Tablemodel

 

Hello

 

I tried in a Tablemodel to add a row. I have changed my data array and then i called the fireTableRowsInserted-Method and nothing happens. When i resize the ULCFrame then the line is visible. After this i tried fireTableChanged and this works also fine. What is the problem?

 

Here is the code of my model

 

 private String[] _columnNames = { "Name", "ident", "Empl. Name", "OID", "lastChangeUser"};
 
 private List _rows = new ArrayList();
 private List _oid = new ArrayList();
 private List _user = new ArrayList();

 

 public void reload(List lst){
  _rows.clear();
  _oid.clear();
  _user.clear();
  for (int r = 0; r < lst.size(); r ++) {
   User user = (User) lst.get(r);
   fillRowElement(user);
  }
  fireTableDataChanged();
 }
 
 public OID getOid(int row){
  return (OID)_oid.get(row);
 }
 
 public User getUser(int row){
  return (User)_user.get(row);
 }

 

 public void addUser(User user){
  fillRowElement(user);
  //bug in ULC
//  fireTableRowsInserted(getRowCount(), getRowCount());
  fireTableDataChanged();
 }
 
 private void fillRowElement(User user){
  String[] row = new String[getColumnCount()];
  row[0] = user.getName();
  row[1] = user.getParentEmployee().getIdentification();
  row[2] = user.getParentEmployee().getPerson().getName();
  row[3] = user.getOid().toString();
  row[4] = ""; //user.getHistory().getLastChangeUser().getName();
  _rows.add(row);
  _user.add(user);
  _oid.add(user.getOid());
 }
 
 public void removeUser(int row){
  _rows.remove(row);
  _oid.remove(row);
  _user.remove(row);
  fireTableRowsDeleted(getRowCount(), getRowCount());
 }
 
 public void updateUser(User user, int row){
  _oid.set(row, user.getOid());
  _user.set(row, user);
  String[] rowe = (String[])_rows.get(row);
  rowe[0] = user.getName();
  rowe[1] = user.getParentEmployee().getIdentification();
  rowe[2] = user.getParentEmployee().getPerson().getName();
  rowe[3] = user.getOid().toString();
  rowe[4] = ""; //user.getHistory().getLastChangeUser().getName();
  _rows.set(row, rowe);
  fireTableRowsUpdated(row, row);
 }
 
 public Object getValueAt(int row, int column) {
  return ((String[])_rows.get(row))[column];
 }

 

 public int getColumnCount() {
  return _columnNames.length;
 }

 

 public int getRowCount() {
  return _rows.size();
 }

 

 public String getColumnName(int column) {
  return _columnNames[column];
 }

 

 public boolean isCellEditable(int rowIndex, int columnIndex) {
  if (columnIndex == 2){
   //for date format
   return true;
  }
  return true;
  
 }

 

 public void setValueAt(Object value, int row, int column) {
//  if (column == 0){
//   ((User)modelItems.get(row)).getName();
//  }
//  if (column == 1){
//   ((User)modelItems.get(row)).getParentEmployee().getIdentification();
//  }
//  if (column == 2){
//   ((String[])_rows.get(row))[column] = value.toString();
//  }
//  if (column == 3){
//   ((User)modelItems.get(row)).getOid().toString();
//  }
//  ((String[])_rows.get(row))[column] = value.toString();
//  System.out.println("Modelrow: " +  row);
  System.out.println("Value: " + value);
  System.out.println("ValueClass: " + value.getClass().getName());
 }

 

 public Class getColumnClass(int columnIndex) {
//  if (columnIndex == 2){
//   return Date.class;
//  }
  return String.class;
 } 

 

Torsten Hofmann
Dipl. - Informatiker (FH)
IT Consultant Business Integration
 
Würth Phoenix GmbH
Drillberg 6
D-97980 Bad Mergentheim

(Phone: +49 7931 91 6284
7 Fax: +49 7931 91 7284
+E-Mail: torsten.hofmann@wuerth-phoenix.de
 
    Website: www.wuerth-phoenix.de

 

Reply via email to