Hallo,
Ich habe ein kleine Problem in sachen sortieren. Ich habe recherchiert und ein hinweis gefunden, dass man mit RowSorter JTables sortieren kann. Wenn ich auf meinem Header klicke, dann sortiert er mir die Tabellen auch. sieht schön aus! Allerdings wird die Liste die sich dahinter verbirgt nicht sortiert. Ich habe keinen blassen schimmer, wie ich eine Liste sortiere, wenn ich auf dem Column Header klicke.
Mein Code sieht folgenedermaßen aus:
So habe ich die Methode implementiert
Kann mir da einer helfe`n?
LG nasir
Ich habe ein kleine Problem in sachen sortieren. Ich habe recherchiert und ein hinweis gefunden, dass man mit RowSorter JTables sortieren kann. Wenn ich auf meinem Header klicke, dann sortiert er mir die Tabellen auch. sieht schön aus! Allerdings wird die Liste die sich dahinter verbirgt nicht sortiert. Ich habe keinen blassen schimmer, wie ich eine Liste sortiere, wenn ich auf dem Column Header klicke.
Mein Code sieht folgenedermaßen aus:
Java:
class TableModel extends DefaultTableModel{
private List<Artikel> list=null;
String[] columnNames = {"Name", "Beschreibung", "Dateiname", "Farbe", "Wahl"};
int size = 0;
public TableModel(List<Artikel> list){
this.list=list;
size = list.size();
}
public String getColumnName(int col) {
return columnNames[col];
}
public int getColumnCount(){
return 5;
}
public int getRowCount(){
return size;
}
public Class getColumnClass(int c) {
if(c == 3) return Color.class;
if(c == 4) return Boolean.class;
else return String.class;
}
public boolean isCellEditable(int row, int col) {
if (col < 1) {
return false;
} else {
return true;
}
}
//Hier bekommt man alle Tabellen zurueckgeliefert
public Object getValueAt(int row, int column){
if(row>=list.size()){
return null;
}
Artikel o=list.get(row);
if(column==0){
return o.get_name();
} else if(column == 1){
return o.get_description();
} else if(column == 2){
return o.get_xml_root();
} else if(column == 3){
return o.get_color();
} else if(column == 4){
return o.get_check_box();
} else{
return null;
}
}
//Das ist hier eine standartmethode um die Tabellen zu veraendern!!
public void setValueAt(Object value, int row, int column)
{
if(column == 1)
{
String c = (String)value;
list.get(row).set_description(c);
System.out.println("String wurde veraendert auf: [" + row + ","+
column +"," + list.get(row).get_color() +"," +
list.get(row).get_description() + "]");
}
if(column == 2)
{
String c = (String)value;
list.get(row).set_xml_root(c);
System.out.println("String wurde veraendert auf: [" + row + ","+
column +"," + list.get(row).get_color() +"," +
list.get(row).get_xml_root() + "]");
}
if(column == 3)
{
Color c = (Color)value;
list.get(row).set_color(c);
System.out.println("farbe wurde gesetzt auf: [" + row + ","+
column +"," + list.get(row).get_color() +"," +
list.get(row).get_Hex_Color() + "]");
}
if(column == 4)
{
list.get(row).set_check_box((((Boolean)value)).booleanValue());
System.out.println("Marker wurde gesetzt [" + row +"," +
column +"," + list.get(row).get_check_box() + "]");
}
}
}
So habe ich die Methode implementiert
Java:
JTable artikelTable = new JTable();
artikelTable.setModel(new ArtikelTableModel(ArtikelList));
artikelTable.getColumn("Name").setPreferredWidth(30);
artikelTable.getColumn("Beschreibung").setPreferredWidth(500);
artikelnTable.getColumn("Dateiname").setPreferredWidth(100);
artikelTable.getColumn("Farbe").setPreferredWidth(40);
artikelTable.getColumn("Wahl").setPreferredWidth(30);
artikelTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
artikelTable.setAutoCreateRowSorter(true);
Kann mir da einer helfe`n?
LG nasir