public class GUI
{
String[] nameOfTeamArray;
String[][] table1; //hier wird die gesamte tabelle eingelsen. 1. [] Sind die Teams 2.[] Die Spiele der Teams
String[][] gameRanking = new String[100][100]; // hier werden die sortierten Spielerlisten in dem Array hinterlegt 1. [] sind die games 2. [] sind die Teams
TreeMap endTree = new TreeMap();
int [ ] endRanking = new int[3];
TreeMap tree = new TreeMap();
boolean stop = false;
Vector nameOfTeam = new Vector();
Vector nameOfGame = new Vector();
int numbersOfTeams;
int numbersOfGames;
String currentProject;
String projectPath = "C:\\Pokalwettkampf\\";
JFrame f = new JFrame("DayCalculator");
DefaultTableModel model;
JTable table;
private void init()
{
f.setSize(200,200);
f.setLocation(200,200);
f.setVisible(true);
}
public static void main(String[] args)
{
GUI a = new GUI();
a.start();
}
private void start()
{
init();
menu();
JOptionPane.showMessageDialog(null , "Willkommen beim PokalwettkampfCalculator" );
}
private void fileChooser()
{
JFileChooser fc = new JFileChooser();
fc.setFileFilter( new FileFilter()
{
public boolean accept( File f )
{
return f.isDirectory() ||
f.getName().toLowerCase().endsWith( ".txt" );
}
public String getDescription()
{
return "Texte";
}
} );
int state = fc.showOpenDialog( null );
if ( state == JFileChooser.APPROVE_OPTION )
{
File file = fc.getSelectedFile();
System.out.println( file.getName() );
}
else
System.out.println( "Auswahl abgebrochen" );
}
private void menu()
{
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu( "Datei" );
JMenu editMenu = new JMenu( "Bearbeiten" );
menuBar.add( fileMenu );
menuBar.add( editMenu );
f.setJMenuBar( menuBar );
Action newAction = new AbstractAction( "Neu" ) {
public void actionPerformed( ActionEvent e ) {
newProject();
table();
}
};
Action openAction = new AbstractAction( "Öffnen" ) {
public void actionPerformed( ActionEvent e ) {
fileChooser();
}
};
Action addRowAction = new AbstractAction( "Reihe hinzufügen" ) {
public void actionPerformed( ActionEvent e ) {
//reihe adden
}
};
Action addColumAction = new AbstractAction( "Spalte hinzufügen" ) {
public void actionPerformed( ActionEvent e ) {
//spalte adden
}
};
Action removeRowAction = new AbstractAction( "Reihe entfernen" ) {
public void actionPerformed( ActionEvent e ) {
removeRow();
}
};
Action calcAction = new AbstractAction( "Berechnen" ) {
public void actionPerformed( ActionEvent e ) {
saveTable();
}
};
fileMenu.add( newAction );
fileMenu.add( openAction );
fileMenu.add( calcAction );
editMenu.add(addRowAction);
editMenu.add(addColumAction);
editMenu.add(removeRowAction);
f.setVisible(true);
}
private void newProject()
{
String newProjectName = JOptionPane.showInputDialog( "Bitte geben sie den Namen ihres Projects an" );
File newProject = new File(projectPath + newProjectName);
currentProject = newProject.getPath();
String teams = JOptionPane.showInputDialog( "Wie viele Mannschaften haben sich angemeldet?" );
numbersOfTeams = Integer.parseInt (teams);
String games = JOptionPane.showInputDialog( "Wie viele Stationen gibt es?" );
numbersOfGames = Integer.parseInt(games);
initNewProject();
}
private void initNewProject()
{
initTeamsForNewProject(0);
initGamesForNewProject(0);
}
private void initTeamsForNewProject(int x)
{
nameOfTeamArray = new String[numbersOfTeams];
for(int i = 0; i < numbersOfTeams ; i++)
{
nameOfTeam.add(JOptionPane.showInputDialog( "Namen der " + (i + 1)+ " . Mannschaft angeben." ));
nameOfTeamArray[i] = (String)nameOfTeam.get(i);
}
}
private void initGamesForNewProject(int x)
{
nameOfGame.add("");
for(int i = 1; i < numbersOfGames + 1; i++)
{
nameOfGame.add(i, JOptionPane.showInputDialog( "Namen des " + (i)+ " . Spiels angeben." ));
}
}
private void save() throws IOException
{
BufferedWriter write = null;
try
{
write = new BufferedWriter(new FileWriter(currentProject));
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
write.close();
}
}
private void table()
{
// Das Model das wir verwenden werden. Hier setzten wir gleich die
// Titel, aber es ist später immer noch möglich weitere Columns oder
// Rows hinzuzufügen.
model = new DefaultTableModel( nameOfGame, 0 );
table = new JTable( model )
{
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
c.setBackground(Color.white );
if( column == 0 )
{
c.setBackground(Color.lightGray);
}
return c;
}
};
for ( int i = 0 ; i < numbersOfTeams ; i++ )
{
Vector newDatas = createDataVector( i );
model.addRow( newDatas );
}
f.add(table);
// Buttons, damit das alles schöner aussieht.
//final JButton buttonAddRow = new JButton( "add row" );
//final JButton buttonRemRow = new JButton( "remove row" );
//final JButton buttonAddCol = new JButton( "add column" );
//buttonRemRow.setEnabled( false );
// Den Buttons ein paar Reaktionen geben
//buttonAddRow.addActionListener( new ActionListener(){
// public void actionPerformed(ActionEvent e) {
// Die Anzahl Columns (Breite) der Tabelle
// int size = model.getColumnCount();
// einen neuen Vector mit Daten herstellen
//Vector newDatas = createDataVector( "row", size );
// eine neue Row hinzufügen
//model.addRow( newDatas );
// das Entfernen erlauben
//buttonRemRow.setEnabled( true );
//}
//});
//buttonAddCol.addActionListener( new ActionListener(){
// public void actionPerformed(ActionEvent e) {
// int size = model.getRowCount();
//Vector newDatas = createDataVector( "column", size );
//String name = String.valueOf( model.getColumnCount() );
//model.addColumn( name, newDatas );
//}
//});
//buttonRemRow.addActionListener( new ActionListener(){
// public void actionPerformed(ActionEvent e) {
// int size = model.getRowCount();
//int index = (int)(Math.random() * size);
//model.removeRow( index );
//buttonRemRow.setEnabled( size > 1 );
//}
//});
Container content = f.getContentPane();
content.add( new JScrollPane( table ), BorderLayout.CENTER );
//content.add( buttonAddRow, BorderLayout.NORTH );
//content.add( buttonRemRow, BorderLayout.SOUTH );
//content.add( buttonAddCol, BorderLayout.WEST );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.pack();
f.setVisible( true );
}
public Vector createDataVector( int x )
{
Vector vector = new Vector(numbersOfTeams);
vector.add(nameOfTeam.get(x));
for( int i = 0; i < numbersOfTeams; i++ )
vector.add( "");
return vector;
}
private void removeRow()
{
String removeRow = (String) JOptionPane.showInputDialog( null,
"Reihe",
"Bitte die zu löschende Reihe wählen.)",
JOptionPane.QUESTION_MESSAGE,
null, nameOfTeamArray, nameOfTeamArray[0]);
String[] optionen = { "Ja", "Nein", "Abbrechen" };
int n = JOptionPane.showOptionDialog( null,
"Sind Sie sich sicher dass sie die Reihe " + removeRow + " Löschen wollen?", // Fragetext
"Löschen der Reihe " + removeRow, // Titel
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, // Icon
null, optionen,optionen[0] );
if ( n == JOptionPane.YES_OPTION )
{
for(int i = 0; i < numbersOfTeams; i++)
{
if(removeRow.equals(nameOfTeam.get(i)))
{
model.removeRow( i );
}
}
JOptionPane.showMessageDialog( null, "Die Reihe >" + removeRow + "< wurde erfolgreich gelöscht." );
}
else
{
JOptionPane.showMessageDialog( null, "Die Reihe >" + removeRow + "< wurde !nicht! gelöscht." );
}
}
public String getCell(int x , int y)
{
return (String)table.getValueAt(x, y);
}
public void sortPerGame()
{
String points = "1";
int check;
gameRanking = new String[100][100];
// Das Spaltenweise Einlesen der daten!
for(int j = 1; j < numbersOfGames + 1; j++)
{
for(int i = 0; i < numbersOfTeams; i++)
{
tree.put(table1[i][j], nameOfTeam.get(i));
}
System.out.println(tree);
Collection c = tree.values();
int x = 1;
if( j == 1)
{
for ( Iterator i = c.iterator(); i.hasNext(); )
{
String save = (String)i.next();
endTree.put(save , points);
check = Integer.parseInt(points) + 1;
points = "" + check;
}
}
else
{
for ( Iterator i = c.iterator(); i.hasNext(); )
{
String save = (String)i.next();
check = Integer.parseInt((String)endTree.get(save));
endTree.remove(save);
points = "" + (check + x);
endTree.put(save , points);
x++;
}
}
tree.clear();
}
System.out.println(endTree);
}
/**
* Save table in a Array
*/
private void saveTable()
{
table1 = new String[numbersOfTeams][numbersOfGames + 1];
for(int i = 0; i < numbersOfTeams; i++)
{
for(int j = 0; j < numbersOfGames + 1; j++)
{
table1[i][j] = getCell(i,j);
}
}
sortPerGame();
}
}