I'm using a Table Model to create a JTable. I only want two of the columns editable. When a user types information in the SKU column, the other cells on that row will be automatically populated with data pertaining to that SKU. My problem is that since I only set the two columns as editable, now setValueAt(int row, int column) doesn't work for the remaining columns. Any tips on how I can force data into these cells? Thanks. Code:
import java.awt.Point;
import java.util.Hashtable;
import javax.swing.event.*;
import javax.swing.table.TableModel;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class POSTableModel extends AbstractTableModel
{
private Hashtable lookup;
private final int rows;
private final int columns;
private final
String headers[];
public POSTableModel(int rows, String columnHeaders[])
{
if ((rows < 0) || (columnHeaders == null))
{
throw new IllegalArgumentException("Invalid row count/columnHeaders");
}
this.rows = rows;
this.columns = columnHeaders.length;
headers = columnHeaders;
lookup = new Hashtable();
}
public boolean isCellEditable(int row, int column)
{
if(getColumnName(column).equals("SKU") || getColumnName(column).equals("Quantity"))
{
return true;
}
else
{
return false;
}
//return getColumnName(column).equals("SKU");
}
public int getColumnCount()
{
return columns;
}
public int getRowCount()
{
return rows;
}
public String getColumnName(int column)
{
return headers[column];
}
public Object getValueAt(int row, int column)
{
return lookup.get(new Point(row, column));
}
public void setValueAt(Object value, int row, int column)
{
if ((rows < 0) || (columns < 0))
{
throw new IllegalArgumentException("Invalid row/column setting");
}
if ((row < rows) && (column < columns))
{
lookup.put(new Point(row, column), value);
}
}
}
other class file:
Object rowData[][] = new Object[50][6];
for(int i = 0; i < rowData.length; i++)
{
rowData[i][0]= String.valueOf(i);
for(int j = 1; j < rowData[i].length; j++)
{
rowData[i][j] = "";
}
}
String columnNames[] = {"Line , "Date", "SKU", "Quantity",
"Description", "Unit Price"};
TableModel model = new POSTableModel(50, columnNames);
posTable = new JTable(model);