Re: JTable display
By adding this "public class drend extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column) {
setText(value.toString());
return this;
}
}"
I got what I wanted!
Thanks,
Abbas
import java.awt.Component;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class tableTest {
public JFrame mainFrame = new JFrame("Java Task Manager");
public JPanel mainPanel = new JPanel();
public JTable mainTable = new JTable();
public DefaultTableModel defaultTableModel = new DefaultTableModel(){
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}
};
public class CustomDate extends Date {
public CustomDate(){
}
public CustomDate(long arg0){
super(arg0);
}
public String toString(){
SimpleDateFormat sl = new SimpleDateFormat("H:m | dd-MMM-yyyy");
return sl.format(this);
}
}
public class drend extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column) {
setText(value.toString());
return this;
}
}
public void showUI(){
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.getContentPane().add(mainPanel);
mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.X_AXIS));
mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS));
mainPanel.add(new JScrollPane(mainTable));
mainTable.setModel(defaultTableModel);
String[] cid = {"Name","Date"};
defaultTableModel.setColumnIdentifiers(cid);
String[] nms = {"a","ss","de","des","fes"};
Calendar cl = Calendar.getInstance();
Date[] dts = new Date[5];
//1
cl.set(2008, Calendar.JANUARY, 1, 12, 44);
dts[0] = new CustomDate(cl.getTimeInMillis());
//2
cl.set(2008, Calendar.FEBRUARY, 22, 10, 12);
dts[1] = new CustomDate(cl.getTimeInMillis());
//3
cl.set(2008, Calendar.MARCH, 1, 1, 2);
dts[2] = new CustomDate(cl.getTimeInMillis());
//4
cl.set(2008, Calendar.APRIL, 1, 1, 32);
dts[3] = new CustomDate(cl.getTimeInMillis());
//5
cl.set(2008, Calendar.MAY, 1, 13, 14);
dts[4] = new CustomDate(cl.getTimeInMillis());
for(int i=0;i<5;i++){
Object[] ob= {nms[i],dts[i]};
defaultTableModel.addRow(ob);
}
mainTable.setDefaultRenderer(Date.class, new drend());
//TablemainTable.getColorModel() getColumn(1).setHeaderRenderer(new
drend());
mainTable.setAutoCreateRowSorter(true);
mainFrame.pack();
mainFrame.setResizable(false);
mainFrame.setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
tableTest ts = new tableTest();
ts.showUI();
}
}
date displayed like "H:m |
dd-MM-yyyy"?
seehttp://mindprod.com/jgloss/jtable.html
There is code for a DateRenderer. You would modify it to use a
SimpleDateFormat to get what you want.
Seehttp://mindprod.com/jgloss/calendar.html
--
Roedy Green Canadian Mind Products
The Java Glossaryhttp://mindprod.com