JTables:tabbing
I've got a JTable and I want to replace the existing text in a cell
when the cell is focused. What I have currently works if the cell is
double-clicked but if I tab to it, it appends the first letter typed
to the existing text and THEN replaces the text with subsequent key
strokes. How do I make tabbing act the same way as double-click?
Thanks in advance,
Nancy
CODE::
table = new JTable(table_model){
public Component prepareRenderer(TableCellRenderer renderer, int
rowIndex, int vColIndex){
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
if (isCellSelected(rowIndex, vColIndex)){
c.setBackground(new Color(184, 207, 229));
final Component editor = getEditorComponent();
SwingUtilities.invokeLater(new Runnable(){
public void run(){
((JTextComponent)editor).selectAll();
}
});
} else if (vColIndex == 7 && !isCellSelected(rowIndex, vColIndex)){
c.setBackground(new Color(255, 204, 153));
} else if ((vColIndex == 9 || vColIndex == 17) && !
isCellSelected(rowIndex, vColIndex)){
c.setBackground(new Color(204, 255, 255));
} else if (vColIndex == 13 && !isCellSelected(rowIndex, vColIndex)){
c.setBackground(new Color(204, 204, 255));
} else if (vColIndex == 15 && !isCellSelected(rowIndex, vColIndex)){
c.setBackground(new Color(204, 255, 204));
} else if (vColIndex == 11 && !isCellSelected(rowIndex, vColIndex)){
c.setBackground(new Color(255, 255, 153));
} else if (rowIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex))
{
c.setBackground(new Color(255, 255, 230));
} else {
c.setBackground(getBackground());
}
return c;
}
public boolean editCellAt(int row, int column, EventObject e){
boolean result = super.editCellAt(row, column, e);
final Component editor = getEditorComponent();
if (editor != null && editor instanceof JTextComponent){
if (e == null){
System.out.println("null");
((JTextComponent)editor).selectAll();
} else {
System.out.println("not null");
SwingUtilities.invokeLater(new Runnable(){
public void run(){
((JTextComponent)editor).selectAll();
}
});
}
}
return result;
}
};