JTable+cell+java.SQL.Date -> Editing problem
I have Date fields in my DB.
I place them into my JTable.
I want to present Date to user like:dd.mm.YYYY ordd.-mm-YYYY
.
For SQL is: %d.%m.%Y or %d-%m-%Y
Default mask for Date in DB is: YYYY-mm-dd
I can't change it. It is already set.
When I use
DATE_FORMAT(date, "%d-%m-%Y") ;
in mySQL SELECT query, I get problems with parsing result.
I can't understand why, but sometimes I get NULL, and my Vector with results is not filled properly.
when I just take Date field and present it asString, I don't have any problems withdetecting NULL values and I overcome this sudden NULL.
That is why I decided to transform Date on client side.
But I have problems.
1. I have a problem DEFAULT value (0000-00-00)
If user did not fill Date field, it has value=0000-00-00
0000-00-00 becomes 30.11.0002 or something like that.
2. I can't edit cell with Date....
I give small example of my problem
1.I use vectors-they keep data from query
2.All other methods I have taken from my TableModel.
Maybe mistake is in this methods...or somewhere else.
Please, see my SSCE
import java.awt.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.sql.Date;
publicclass TableProcessingextends JFrameimplements TableModelListener
{
JTable table;
Vector tableRowVector;
Vector tableDataVector;
public TableProcessing()
{
Vector columnNamesVector =new Vector();//{"Family", "Birthday date", "Years"};
columnNamesVector.addElement("Person");
columnNamesVector.addElement("Birthday date");
columnNamesVector.addElement("Years");
tableDataVector=new Vector();
Vector tableRowVector =new Vector();
tableRowVector.addElement("John James");
tableRowVector.addElement(Date.valueOf("0000-00-00"));
tableRowVector.addElement("23");
tableDataVector.addElement(tableRowVector);
tableRowVector =new Vector();
tableRowVector.addElement("Tom Perkins");
tableRowVector.addElement(Date.valueOf("2006-12-12"));
tableRowVector.addElement("23");
tableDataVector.addElement(tableRowVector);
DefaultTableModel model =new DefaultTableModel(tableDataVector, columnNamesVector);
model.addTableModelListener(this );
table =new JTable( model )
{
public Class<?> getColumnClass(int columnIndex){
return getValueAt(0, columnIndex).getClass();
//return String.class;
//return super.getColumnClass(columnIndex);
}
public Object getValueAt(int row,int column){
return super.getValueAt(row, column);
}//getValueAt
// The Cost is not editable
publicboolean isCellEditable(int row,int column)
{
returntrue;
}
};//table
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane =new JScrollPane( table );
getContentPane().add( scrollPane );
}//constructor
publicvoid tableChanged(TableModelEvent e)
{
System.out.println(e.getSource());
if (e.getType() == TableModelEvent.UPDATE){
int row = e.getFirstRow();
int column = e.getColumn();
}
}
publicstaticvoid main(String[] args)
{
TableProcessing frame =new TableProcessing();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setLocationRelativeTo(null );
frame.setVisible(true);
}
}

