• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Adding Empty Rows initially when my table model uses ArrayList()<Employee>

 
L Sankaranarayanan
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I wish to construct a JTable with 10 rows defaults . My table model uses ArrayList and Employee objects. When I use it JTable the data is inserted in the last row Why? Could any help me

My code is





import java.util.Date;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import javax.swing.*;
import java.util.*;
/**
*
* @author L.Sankaranarayanan
*/



public class EmployeeTableModel extends AbstractTableModel{
private static final long serialVersionUID = 1L;
protected static final int EMPLOYEE_ID =0;
protected static final int EMPLOYEEE_NAME =1;
protected static final int DATE_OF_BIRTH =2;
protected static final int ADDRESS =3;
protected static final int CITY =4;
protected static final int PINCODE =5;
protected static final int CONTACT_NUMBER =6;
protected static final int DEPARTMENT=7;
protected static final int DATE_OF_APPOINTMENT=8;
protected static final int PASSWORD =9;



protected String employeeId;
protected String employeeName;

protected java.sql.Date dateOfBirth;
protected String address;
protected String city;
protected String pinCode;
protected String contactNumber;
protected String department;
protected java.sql.Date dateOfAppointment;
protected String password;

private int rows;



static final public ColumnData columnHeads[] = {

new ColumnData( "Id", 30, JLabel.LEFT ),
new ColumnData( "Name", 100, JLabel.LEFT ),
new ColumnData( "DateOfBirth", 60, JLabel.RIGHT ),
new ColumnData( "Address", 100, JLabel.LEFT),
new ColumnData( "City", 100, JLabel.LEFT),
new ColumnData( "Pincode", 100, JLabel.LEFT),
new ColumnData( "ContactNumber", 100, JLabel.LEFT),
new ColumnData( "Department", 100, JLabel.LEFT),
new ColumnData( "DateOfAppointment", 100, JLabel.LEFT),
new ColumnData( "Password", 100, JLabel.LEFT)};








protected ArrayList<Employee> employees;

public EmployeeTableModel()
{
this.employees = new ArrayList<Employee>();
// createDefaultRows();

}

public EmployeeTableModel(ArrayList<Employee> employees)
{
this.employees = employees;
}



/*

public void createDefaultRows()
{ rows =10;
for( int i = 0; i < rows; i++ )
{
//employees = new ArrayList<Employee>();
//for( int j = 0; j < columns.length; j++ )
// cols.add(new Employe());
employees.add(new Employee());
}


}
*/
public int getRowCount() {
//if( employees.size()==0) return 10;
return employees.size();
}



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



public String getColumnName(int column) {
return columnHeads[column].title;
}

public void removeAllData(){
employees = null;
this.fireTableDataChanged();
}
public void update(ArrayList<Employee> employees){
this.employees=employees;
fireTableDataChanged();
}
public void clear()
{
employees = employees != null ? employees : new ArrayList<Employee>( );

//createDefaultRows();
this.fireTableDataChanged();


}

public Object getValueAt(int rowIndex, int columnIndex) {
Employee emp =employees.get(rowIndex);

System.out.println("Inside getValueAt "+emp);

switch(columnIndex){
case EMPLOYEE_ID :return emp.getEmployeeId();
case EMPLOYEEE_NAME :return emp.getEmployeeName();
case DATE_OF_BIRTH :return emp.getDateOfBirth();
case ADDRESS :return emp.getAddress();
case CITY :return emp.getCity();
case PINCODE :return emp.getPinCode();
case CONTACT_NUMBER :return emp.getContactNumber();
case DEPARTMENT : return emp.getDepartment();
case DATE_OF_APPOINTMENT:return emp.getDateOfAppointment();
case PASSWORD :return emp.getPassword();

default: return "";
}
}

@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex)
{

case EMPLOYEE_ID :return String.class;
case EMPLOYEEE_NAME :return String.class;
case DATE_OF_BIRTH :return Date.class;
case ADDRESS :return String.class;
case CITY :return String.class;
case PINCODE :return String.class;
case CONTACT_NUMBER :return String.class;
case DEPARTMENT : return String.class;
case DATE_OF_APPOINTMENT:return Date.class;
case PASSWORD :return String.class;

default: return Object.class;
}
}
//over ride the following method only if you want the table cells editable

/* public void setValueAt(Object value, int row, int col) {

Person p = data.get(row);
switch (col) {
case 0: break;
case 1: p.setFirstName( (String) value); break;
case 2: p.setSurName( (String) value); break;
case 3: p.getEventBirth().setDate( (Date) value); break;
case 4: p.getEventDeath().setDate( (Date) value); break;
case 5: p.setInfo( (String) value); break;
default: break;
}

}
*/





public Employee getEmployeeAt( int row )
{
if( row >= getRowCount( ))
return null;

return employees.get(row);
}







public void insert(Employee employee)
{
employees.add(employee);
fireTableRowsInserted(getRowCount()-9,getRowCount()-9);
// super.fireTableDataChanged();

}
public void update(Employee employee, int index)
{
employees.set(index, employee);
fireTableRowsUpdated(index,index);
}
public void delete(int index)
{
employees.remove(index);
fireTableRowsDeleted(index,index);
}






public void setEmployees(ArrayList<Employee> employees)
{
this.employees = employees;
fireTableDataChanged();
}

public ArrayList<Employee> getEm ployees()
{
return this.employees;
}


}








[/color]



 
Ranganathan Kaliyur Mannar
Bartender
Posts: 1101
10
Java Netbeans IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
Please UseCodeTags when posting code i.e use the [code] tag and not the [color] tag. Also, format the code properly and avoid empty lines. Basically, the idea is to make it easy for people who are trying to help you.

Coming to your problem, you have mentioned data is inserted in the last row. I am unable to understand what that means.
Do you mean to say that only the 10th row is filled with data and the rest are empty? You haven't shown the code of the Employee class and I have no idea if you have implemented a no-arg constructor (which in turn fills up the instance variables with some values).
Can you please provide more details?
 
L Sankaranarayanan
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Mr.Renganathan.

What I actually want is EmployeePickList Class with a JTable. The table must initially contain 10 empty rows. When we type some letters in the search TextField , employee names should appear (TextField is added with Document Listener) . By empty constructor I make 10 rows by default. Any how I found the solution by modifiying my codes in the insertEmployee method

corrected code segment



Thanks once again . Im new to this forum and so I didn't notice the code tag . I'll correct myself in future




employeesearch.JPG
[Thumbnail for employeesearch.JPG]
See Atttachement - The output of my program
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic