import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
public class PlaeneFenster extends JFrame {
private DefaultTableModel gruppenPlanData;
private JTable gruppenPlan;
/**
* Konstruktor
*/
public PlaeneFenster(){
draw();
}
public void draw(){
//Layout des Fensters setzen
getContentPane().setLayout(new BorderLayout());
//TabbedPane zum verwalten der Reiter
JTabbedPane alleReiter = new JTabbedPane();
//GruppenPlanPanel
JPanel gruppenPlanPanel = new JPanel();
gruppenPlanPanel.setLayout(null);
gruppenPlanData = new DefaultTableModel();
gruppenPlanData.addColumn("Kleingruppe(Nr, Klassenname)");
gruppenPlanData.addColumn("Startzeitpunkt");
gruppenPlan = new JTable(gruppenPlanData);
gruppenPlanPanel.add(gruppenPlan);
TableRowSorter<DefaultTableModel> rowSorter = new TableRowSorter<DefaultTableModel>( gruppenPlanData );
gruppenPlan.setRowSorter(rowSorter);
//sortiert den Gruppenplan nach Gruppennummern und Startzeiten
List <RowSorter.SortKey> sortKeys
= new ArrayList<RowSorter.SortKey>();
rowSorter.setComparator(0, new MyComparator());
rowSorter.setComparator(1, new MyComparator2());
sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
sortKeys.add(new RowSorter.SortKey(1, SortOrder.ASCENDING));
rowSorter.setSortKeys(sortKeys);
JScrollPane scrollpaneE = new JScrollPane(gruppenPlan);
gruppenPlanPanel.add(scrollpaneE);
scrollpaneE.setBounds(20, 40, 960, 500);
//alle Reiter integrieren
alleReiter.addTab("Kleingruppenpläne", gruppenPlanPanel);
getContentPane().add(alleReiter,BorderLayout.CENTER);
setSize(1000, 700);
setVisible(true);
}
/**
* Fülle Tabelle mit aussagekräftigen Werten
*/
public void fensterFuellen(){
Object data [] ={"1 (2a)",40};
gruppenPlanData.addRow(data);
Object datab [] ={"2 (3c)",16};
gruppenPlanData.addRow(datab);
Object datac [] ={"1 (2a)",46};
gruppenPlanData.addRow(datac);
Object datad [] ={"1 (2a)",16};
gruppenPlanData.addRow(datad);
}
//Eigener Comparator für die erste Spalte
private class MyComparator implements Comparator<String> {
public int compare( String i, String j ) {
if(Integer.parseInt(i.split(" ")[0]) <= Integer.parseInt(j.split(" ")[0]) )
return -1;
else if( Integer.parseInt(i.split(" ")[0]) > Integer.parseInt(j.split(" ")[0]) )
return 1;
else
return 0;
}
}
//eigener Comparator für die 2 Spalte
private class MyComparator2 implements Comparator<Integer> {
public int compare( Integer i, Integer j ) {
if( i <= j )
return -1;
else if(i > j)
return 1;
else
return 0;
}
}
public static void main(String[] args) {
PlaeneFenster plan = new PlaeneFenster();
plan.fensterFuellen();
}
}