Mit dem folgenden Code erzeuge ich meine Tabelle, nur hab ich ziemlich wenig Plan vom sortieren, ist es für einen Novizen, was Java betrifft einfacher, das Array vor dem Einfügen in die Tabelle zu sortieren, oder die Tabelle zu sortieren, hab von beidem nicht allzuviel Ahnung.
Es soll nach ExpStart() sortiert werden, es ist ein Datum.
Es soll nach ExpStart() sortiert werden, es ist ein Datum.
Code:
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.util.Date;
public class MyViewWindowWExp extends JFrame
{
public MyViewWindowWExp(ArrayList filterbuf)
{
super("Work Experience");
JTable wExpTable = createExpTable(filterbuf, 1);
JPanel a = new JPanel();
Container b = getContentPane();
b.setLayout(new GridLayout(2, 1));
b.setLayout(new BorderLayout());
b.add(new JScrollPane(wExpTable), BorderLayout.CENTER);
b.add(a, BorderLayout.SOUTH);
pack();
setSize(1024,735);
setVisible(true);
}
private static String processDate(Date d)
{
String date = (d.getDate() + "." + (d.getMonth() + 1) + "." + (d.getYear() + 1900));
return date;
}
/**
* Return a JTable filled with all working experiences.
*/
public static JTable createExpTable(ArrayList buf, int type)
{
String columnNames[] = { "Job", "Address", "Country", "From", "To" };
int count = 0;
if (buf == null || buf.size() == 0)
return null;
for (int i=0; i < buf.size()/3; i++) {
Experience exp = (Experience)buf.get(3*i+2);
if (exp.getType() == type)
count++;
}
String val[][] = new String [/*buf.size()/3*/count][5];
int pos =0;
for (int i=0; i < buf.size()/3; i++) {
Experience exp = (Experience)buf.get(3*i+2);
if(exp.getType()!=type)
continue;
val[pos][0] = exp.getName();
val[pos][1] = exp.getAddress();
val[pos][2] = exp.getCountry();
val[pos][3] = processDate(exp.getStart());
val[pos][4] = processDate(exp.getEnd());
pos++;
}
JTable wExpTable = new JTable( val, columnNames );
/*wExpTable.getColumnModel().getColumn(0).setPreferredWidth(175);
wExpTable.getColumnModel().getColumn(1).setPreferredWidth(350);
wExpTable.getColumnModel().getColumn(2).setPreferredWidth(50);
wExpTable.getColumnModel().getColumn(3).setPreferredWidth(30);
wExpTable.getColumnModel().getColumn(4).setPreferredWidth(30);*/
return wExpTable;
}
}