OO Klassenfindung bzw. wie fang ich an ...

RobertWI

Mitglied
Hallo miteinander,

ich danke im voraus schon mal für den Zeitaufwand.

Kurz zu mir: Ich habe Java vor vielen Jahren mal gelernt aber leider nicht mehr weiter verfolgt und stelle nun seit einigen Wochen fest, dass ich wohl allles vergessen habe, was mit Programmierung im Allgemeinen und im speziellen mit Java zu tun hat.
Leider bräuchte ich dieses Wissen wieder, da ich nun in der Situation bin ein Turnierverwaltungs- bzw. Turnierprogramm zu schreiben.

Von der Logik her hab ich mal alles in PERL geschrieben aber nicht ansatzweise OO.

Ich brauch grade mal die Ansätze, damit ich da wieder rein komme.

Also:
Ich brauch n Fenster, in dem sich mehrere Parameter einstellen können lassen müssen, z.B. Damen, Herren, Jugend, Doppel, Mixed wäre meiner Meinung nach ein Attribut
Ebenso wie logischerweise Name des Turniers, Datum und Ort des Turniers .... so kommen noch einige weitere Werte dazu die aber erst im weiteren Verlauf des Programms herangezogen werden müssen aber zur Definition des Turniers notwendig sind.

Ist es also folglich richtig, eine Klasse Turnier zu erstellen, die diese Attribute beinhaltet und diese Attribute mit Getter und Setter zu versehen sind?
Wie kann ich mit NetBeans - JavaFX mir ein Fenster zusammenklicken mit allen Lables, Eingabefeldern, Radiobuttons usw. - ich finde da nix ...

Sobald die Parameter eigegeben sind, und die Turnierteilnehmer via Text Datei hochgeladen sind sollen alle Parameter in einer mySQL Datenbank gespeichert werden, sowie dann das Turnier an und für sich starten...
Aus der Menge der Teilnehmer werden entweder Gruppen gebildet nach bestimmten Kriterien und dann eine Gruppenphase des Turniers starten (Round Robin) die dann die Teilnehmer, die weiter kommen in einen KO Baum überführen ...
D.h. es müssen innerhalb der Gruppen Spielpaarungen, Jeder gegen Jeden, gebildet werden und ein Spielplan pro erstellter Gruppe erzeugt werden. Daraus für jede Gruppe eine Tabelle erstellt werden, wobei durch Logik festgelegt, ein oder mehrere Teilnehmer weiter kommen sollen und die anderen als ausgeschieden nicht weiter zu betrachten sind.
Die, die weiterkommen, sollen in einem KO oder Doppel KO Baum landen und dort ihre Begegnungen spielen - Ergebniseingabe ist obligatorisch - plausibilität wird über Logik überprüft.

Die Gruppen müssen, nach Erstellung, nicht nur am Screen verfügbar sein, sondern auch via PDF dokumentiert werden, sowie nachfolgend, nach Abschluss der Gruppenphase, die Tabellen der einzelnen Gruppen.
Der KO bzw. DoppelKO Baum soll ebenfalls nach Erstellung via PDF dokumentiert werden und zusätzlich immer als kleinste Einheit 4 Teilnehmer zusammengefasst ausgegeben werden als PDF ... also 2 Paarungen die direkt voneinander Abhängig sind.

Da das Turnier, wie bei einem z.B. Dartturnier, an mehreren Spielstätten, z.B. beim Dart an mehreren Boards, oder Schach an mehreren Brettern, stattfindet muss die Eingabe der Ergebnisse in der Gruppenphase sowie in der KO Phase jederzeit für jede Begegnung möglich sein.

Wie geh ich am besten vor? Welche Klassen sind hier sinnvoll und wie weit kann bzw. muss ich kapseln?

Für den Fall ich da grade einfach nur den Wald vor lauter Bäumen nicht sehe - entschuldigung
Ich bin so oder so weiter dabei es ohne Hilfe zu finden bzw. den Anfang zu finden ...
 

AndiE

Top Contributor
Ich würde das jetzt erstmal sortieren.
Angenommen, du beginnst mit der Ausschreibung, dann werden sich in der ersten Phase eine Anzahl Vereine melden, die verschiedene Teilnehmer in den Klassen anmelden. In der Zeit, wo die Anmeldung abgeschlossen ist, bis zum Wettkampf müssen dann die Listen erstellt werden. Ob und wie die den Teilnehmern bekannt gemacht werden, müsste man eben sehen. Anhand der erstellten Paarungen erfolgen nun die Spiele. Ob man zusätzlich noch Paarungen auf die Tische oder Schreiben verteilen muss, weiß ich nicht. Die Ergebnisse der Paarungen müssen dann eingetragen werden und ausgewertet werden.
Kommt diese Use-Story so ungefähr hin? Theoretisch kann es auch sein, dass verschiedene Personen an dem Programm arbeiten. Sportleiter, Turnierleiter und Protokollführer fallen mir da ein. Genügt die Zusammenfassung des Turnieres als Turnierabrechnung nach den Richtlinien des Verbandes? Von der Umwandlung in PDF würde ich erstmal Abstand nehmen.
 

RobertWI

Mitglied
Erstmal herzichen Dank für Deine Zeit AndiE,

die Ausschreibung ist in dem Falle vollkommen egal und hinfällig bei der Planung der Software, da erst mit einer vollständigen Teilnehmerliste im txt Format ala:
Spieler Vorname, Spieler Nachname, Mitgliedernummer(Verband), Verein
begonnen wird das Turnier zu starten...

Die PDF Dateien brauche ich in jedem Fall, da diese auf Papier zur Ergebniseinholung benötigt werden, sowie zur Überprüfung ob auch alle gemeldeten Spieler in der Teilnehmerliste sind, die dazu ausgehängt wird an ner Wand ...

Die Verteilung an die "Spielstätte" ist nicht notwendig via Software.

Die Gruppen sollen von der Software erstellt werden, da auch keine Leistungsklassen zu beachten sind. Das kann man sich für viel später gedanklich aufheben ... vielleicht in Version 10001 oder so :D

Die Gruppenerstellung hab ich in PERL vorliegen... also die Logik dafür... das sollte nicht das Problem sein.
Ebenso die Paarungserstellung, Logik in PERL vorhanden.
Die Gruppen brauch ich aber auch wieder als PDF, sowie die daraus gewürfelten Paarungen, ist eh "nur" RoundRobin, zur Ergebniseinholung.

Wenn alle Gruppenergebnisse vorliegen, soll die Software für jede Gruppe ein PDF mit der dazugehörigen Tabelle ausspucken zur Dokumentation und ebenfalls zum Aushängen ....
Die nächste Aufgabe ist aus den Teilnehmern, die, per Parametrisierung, weiter gekommen sind, einen KO Baum oder DoppelKO Baum zu erstellen ... parallel wieder PDF weil Ergebniseinholung und Info bzw. Doku.

Dann natürlich Ergebniseingabe und Weiterleitung in das verbleibende Teilnehmerfeld im Baum ... also letzte 64 -> gewinn -> letzte 32 -> gewinn -> letzte 16 usw. oder eben ausscheiden ....

Das gesamte Turnier mit allen Gruppen, Paarungen, Ergebnissen gespeichert in mySQL ... um Rückwirkend darauf zuzugreifen und sich das gesamte beendete Turnier zu dokumentieren via PDF ... zur weiteren Verbreitung via WebSite Ergebnisdienst ...
 

Dukel

Top Contributor
Bis wann brauchst du das ganze denn? Wenn du in zwei Wochen dir Java beibringen magst ist das was anderes wie wenn das ganze in einem halben Jahr benötigt wird.
Wenn es kurzfristig ist würde ich nach einer alternative schauen. Evtl. ein fertiges Turnier Verwaltungsprogramm oder eine Excel Liste.
 

RobertWI

Mitglied
Danke Dukel für Deine Zeit,

na ja .... Ich hatte alles in PERL soweit fertig, dass es rudimentär arbeitete .... leider haben sich die Anforderungen dann geändert und das konnte ich in den mit heißer Nadel gestricktem Code nicht mehr unterbringen ... daher Neubau und von Anfang an sicher und gut und nicht geschludert ....

Eigentlich trifft es das mit den 2 Wochen recht gut :D - aber ich glaube nicht ansatzweise dass ich das hinbekommen werde ... also von dem her wird es eben länger dauern ...

Ein fertiges Programm bzw. Excel haben wir bereits und das ist ja der Grund warum ich damit überhaupt anfing ...
 

AndiE

Top Contributor
Ich würde mal sagen, du solltest dir das entweder direkt in Java ausdrucken lassen, scannen und als PDF speichern, oder eine HTML-Datei erstellen, und die in PDF umwandeln. Word macht das, glaube ich. PDF und Java mögen sich nicht so wie Perl und PDF, glaube ich. Anfangen würde ich mit vier "Dummys", also Spielern, die festverdrahtet vorgegeben werden. Dann kannst du den Spielplan erstellen, den Druck vorbereiten und die Ergebnisliste bearbeiten. Als nächstes kannst du dann darangehen, diese Spieler als Textdatei zu übergeben statt über Dummys. Wenn du die Anzahl der Mitspieler erhöhst, kannst du testen, ob deine Logik stimmt. Insbesondere der Punkt, ab wann der KO-Baum einsetzt. Beim Fußball hat man 16 Mannschaften aus 8 Gruppen. Gehe ich von 4 Spielern je Gruppe aus, würde ein Turnier erst ab 32 Leute stattfinden können. Was ist mir weniger? Wenn du diese Ansetzungen anlegen, eingeben und per Duck ausgeben kannst, bist du schon ein gutes Stück weit.
 

RobertWI

Mitglied
Danke Dir nochmals für Deine Zeit,

mein aktuelles Problem ist, dass ich noch nicht mal ne verd...... GUI hin bekomme und ich auch noch immer nicht weiss, wie ich das mit den Klassen machen soll ... Ich finde den Anfang einfach nicht ....

Dadurch, dass ja auch mehrere Turniere mit unterschiedlichen Kriterien gleichzeitig laufen können bzw. sicher werden muss ich ja auch in der Lage sein, mehrere Turniere gleichzeitig laufen zu lassen innerhalb einer Instanz ...

Mein Gedanke war eine Klasse Turnier, die alle nötigen Attribute beherbergt ...
mir raucht grad der Kopf und ich komm keinen mm weiter grade ...
 

AndiE

Top Contributor
Nehmen wir mal den Fall an, du hast die Spieler A,B,C,D. Jeder Spieler hat einen Namen und eine Punktwertung. Dann hast du Paarungen, z.B.: 1.A-B und 2.C-D, was heißt das? Du brauchst Objekte "Paarung" mit zwei Spielern und Ergebnissen. Die Klasse Turnier hält diese Paarungen. Theoretisch brauchst du keine GUI, aber du kannst diese Paarungen auch in einem Pane ausgeben, nachdem du ein Button gedrückt hast. Wie das geht, steht im Unterforum zu AWT, Swing etc. oder bei Oracle.
 

RobertWI

Mitglied
AndiE - die GUI brauch ich schon mal vorab um die Parametrisierung des Turniers durchzuführen.
So weit bin ich bis dato:

GUI.PNG

Code:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package turnierverwaltung;
import ui.ParaFrame;

/**
*
* @author admin
*/
public class Turnierverwaltung {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        ParaFrame frame=new ParaFrame();
        frame.setTitle("Turnierverwaltung");
        frame.setSize(775, 525);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
   
}

Code:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ui;

/**
 *
 * @author admin
 */
public class ParaFrame extends javax.swing.JFrame {

    /**
     * Creates new form TestUI
     */
    public ParaFrame() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        bG_tart = new javax.swing.ButtonGroup();
        bG_tspielermodus = new javax.swing.ButtonGroup();
        bG_twer = new javax.swing.ButtonGroup();
        bG_traiselegs = new javax.swing.ButtonGroup();
        bG_tavg = new javax.swing.ButtonGroup();
        bG_tsystem = new javax.swing.ButtonGroup();
        txt_tname = new javax.swing.JTextField();
        lbl_tname = new javax.swing.JLabel();
        lbl_tort = new javax.swing.JLabel();
        txt_tort = new javax.swing.JTextField();
        lbl_tdatum = new javax.swing.JLabel();
        txt_tdatum = new javax.swing.JTextField();
        rb_steel = new javax.swing.JRadioButton();
        rb_edart = new javax.swing.JRadioButton();
        rb_einzel = new javax.swing.JRadioButton();
        rb_doppel = new javax.swing.JRadioButton();
        rb_team = new javax.swing.JRadioButton();
        rb_damen = new javax.swing.JRadioButton();
        rb_herren = new javax.swing.JRadioButton();
        rb_mixed = new javax.swing.JRadioButton();
        jLabel4 = new javax.swing.JLabel();
        txt_tboards = new javax.swing.JTextField();
        lbl1_tsets = new javax.swing.JLabel();
        txt_tsets = new javax.swing.JTextField();
        lbl2_tsets = new javax.swing.JLabel();
        lbl1_tlegs = new javax.swing.JLabel();
        txt_tlegs = new javax.swing.JTextField();
        lbl2_tlegs = new javax.swing.JLabel();
        lbl_traiselegs = new javax.swing.JLabel();
        rb_nicht = new javax.swing.JRadioButton();
        rb_runde = new javax.swing.JRadioButton();
        rb_achtel = new javax.swing.JRadioButton();
        rb_viertel = new javax.swing.JRadioButton();
        lbl_tfinal = new javax.swing.JLabel();
        txt_tfinalsets = new javax.swing.JTextField();
        lbl_tfinalsets = new javax.swing.JLabel();
        txt_finallegs = new javax.swing.JTextField();
        lbl_tfinallegs = new javax.swing.JLabel();
        lbl_avg = new javax.swing.JLabel();
        rb_tavgja = new javax.swing.JRadioButton();
        rb_tavgnein = new javax.swing.JRadioButton();
        lbl_tsystem = new javax.swing.JLabel();
        rb_rr = new javax.swing.JRadioButton();
        rb_rrko = new javax.swing.JRadioButton();
        rb_rrdko = new javax.swing.JRadioButton();
        rb_ko = new javax.swing.JRadioButton();
        rb_dko = new javax.swing.JRadioButton();
        rb_ss = new javax.swing.JRadioButton();
        b_tupload = new javax.swing.JButton();
        lbl_tupload = new javax.swing.JLabel();
        txt_tupdate = new javax.swing.JTextField();
        b_ok = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        jSeparator2 = new javax.swing.JSeparator();
        jSeparator3 = new javax.swing.JSeparator();
        jSeparator4 = new javax.swing.JSeparator();
        rb_jugend = new javax.swing.JRadioButton();
        b_reset = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        txt_tname.setToolTipText("<html>PFLICHTFELD<br>Bitte geben sie den Namen des Turniers ein <br>(z.B. Hessenmeisterschaft 2017 oder Vereinsmeisterschaft 2017). <br>Der Name ist notwendig zur eindeutigen Identifikation des Turniers. <br>Werdenn mehrere Turniere mit dem gleichen Namen gespielt, <br>so müssen sich der Ort und das Datum unterscheiden.</html>");
        txt_tname.setName("tnametext"); // NOI18N
        txt_tname.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txt_tnameActionPerformed(evt);
            }
        });

        lbl_tname.setLabelFor(txt_tname);
        lbl_tname.setText("Name des Turniers:");
        lbl_tname.setToolTipText("<html>PFLICHTFELD<br>Bitte geben sie den Namen des Turniers ein <br>(z.B. Hessenmeisterschaft 2017 oder Vereinsmeisterschaft 2017). <br>Der Name ist notwendig zur eindeutigen Identifikation des Turniers. <br>Werdenn mehrere Turniere mit dem gleichen Namen gespielt, <br>so müssen sich der Ort und das Datum unterscheiden.</html>");
        lbl_tname.setName("tnamelable"); // NOI18N

        lbl_tort.setLabelFor(txt_tort);
        lbl_tort.setText("Ort:");
        lbl_tort.setToolTipText("<html>PFLICHTFELD<br>Bitte geben sie den Ort ein an dem das Turnier ausgetragen<br> wird. Der Ort ist notwendig zur eindeutigen Identifikation<br> des Turniers. Werdenn innerhalb des Ortes mehrere Turniere gespielt,<br> so müssen sich der Name und das Datum unterscheiden.</html>");
        lbl_tort.setName("tortlable"); // NOI18N

        txt_tort.setToolTipText("<html>PFLICHTFELD<br>Bitte geben sie den Ort ein an dem das Turnier ausgetragen<br> wird. Der Ort ist notwendig zur eindeutigen Identifikation<br> des Turniers. Werdenn innerhalb des Ortes mehrere Turniere gespielt,<br> so müssen sich der Name und das Datum unterscheiden.</html>");
        txt_tort.setName("torttext"); // NOI18N

        lbl_tdatum.setLabelFor(txt_tdatum);
        lbl_tdatum.setText("Datum:");
        lbl_tdatum.setToolTipText("<html>PFLICHTFELD<br>Bitte geben sie das Datum des Turniers ein. Das Datum<br> ist notwendig zur eindeutigen Identifikation des Turniers.<br> Werden mehrere Turniere am gleichen Tag gespielt, so müssen<br> sich der Name und der Ort unterscheiden.</html>");
        lbl_tdatum.setName("tdatumlable"); // NOI18N

        txt_tdatum.setToolTipText("<html>PFLICHTFELD<br>Bitte geben sie das Datum des Turniers ein. Das Datum<br> ist notwendig zur eindeutigen Identifikation des Turniers.<br> Werden mehrere Turniere am gleichen Tag gespielt, so müssen<br> sich der Name und der Ort unterscheiden.</html>");
        txt_tdatum.setName("tdatumtext"); // NOI18N

        bG_tart.add(rb_steel);
        rb_steel.setSelected(true);
        rb_steel.setText("Steeldart");
        rb_steel.setToolTipText("Auswahl zwischen Steel- oder E-Dart Turnier");
        rb_steel.setName("tartradio1"); // NOI18N
        rb_steel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                steeldart(evt);
            }
        });

        bG_tart.add(rb_edart);
        rb_edart.setText("E Dart");
        rb_edart.setToolTipText("Auswahl zwischen Steel- oder E-Dart Turnier");

        bG_tspielermodus.add(rb_einzel);
        rb_einzel.setSelected(true);
        rb_einzel.setText("Einzel");
        rb_einzel.setToolTipText("Bitte auswählen");

        bG_tspielermodus.add(rb_doppel);
        rb_doppel.setText("Doppel");
        rb_doppel.setToolTipText("Bitte auswählen");
        rb_doppel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rb_doppelActionPerformed(evt);
            }
        });

        bG_tspielermodus.add(rb_team);
        rb_team.setText("Team");
        rb_team.setToolTipText("Bitte auswählen");

        bG_twer.add(rb_damen);
        rb_damen.setText("Damen");
        rb_damen.setToolTipText("Bitte auswählen");

        bG_twer.add(rb_herren);
        rb_herren.setSelected(true);
        rb_herren.setText("Herren");
        rb_herren.setToolTipText("Bitte auswählen");

        bG_twer.add(rb_mixed);
        rb_mixed.setText("Mixed");
        rb_mixed.setToolTipText("Bitte auswählen");

        jLabel4.setLabelFor(txt_tboards);
        jLabel4.setText("Anzahl der Boards:");
        jLabel4.setToolTipText("<html>KEIN PFLICHTFELD<br>Geben sie hier die Anzahl der Boards<br> ein auf welchen das Turnier gespielt werden soll.<br> Das Feld kann auch leer gelassen werden!</html>");

        txt_tboards.setToolTipText("<html>KEIN PFLICHTFELD<br>Geben sie hier die Anzahl der Boards<br> ein auf welchen das Turnier gespielt werden soll.<br> Das Feld kann auch leer gelassen werden!</html>");
        txt_tboards.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txt_tboardsActionPerformed(evt);
            }
        });

        lbl1_tsets.setLabelFor(txt_tsets);
        lbl1_tsets.setText("Best of ");
        lbl1_tsets.setToolTipText("<html>KEIN PFLICHTFELD<br>Geben sie hier die Anzahl der Sets die<br> gespielt werden sollen ein. Wird das Feld leer<br> gelassen, so wird ein reiner Leg Modus gespielt!</html>");

        txt_tsets.setToolTipText("<html>KEIN PFLICHTFELD<br>Geben sie hier die Anzahl der Sets die<br> gespielt werden sollen ein. Wird das Feld leer<br> gelassen, so wird ein reiner Leg Modus gespielt!</html>");

        lbl2_tsets.setLabelFor(txt_tsets);
        lbl2_tsets.setText("Sets");
        lbl2_tsets.setToolTipText("<html>KEIN PFLICHTFELD<br>Geben sie hier die Anzahl der Sets die<br> gespielt werden sollen ein. Wird das Feld leer<br> gelassen, so wird ein reiner Leg Modus gespielt!</html>");

        lbl1_tlegs.setLabelFor(txt_tlegs);
        lbl1_tlegs.setText("Best of");
        lbl1_tlegs.setToolTipText("<html>PFLICHTFELD<br>Geben sie hier die Anzahl der Legs die<br> gespielt werden sollen ein. Das Feld kann<br> NICHT LEER gelassen werden!</html>");

        txt_tlegs.setToolTipText("<html>PFLICHTFELD<br>Geben sie hier die Anzahl der Legs die<br> gespielt werden sollen ein. Das Feld kann<br> NICHT LEER gelassen werden!</html>");

        lbl2_tlegs.setLabelFor(txt_tlegs);
        lbl2_tlegs.setText("Legs");
        lbl2_tlegs.setToolTipText("<html>PFLICHTFELD<br>Geben sie hier die Anzahl der Legs die<br> gespielt werden sollen ein. Das Feld kann<br> NICHT LEER gelassen werden!</html>");

        lbl_traiselegs.setText("Erhöhung der Legs");
        lbl_traiselegs.setToolTipText("<html>Wählen sie hier ob die Anzahl der zu spielenden Legs,<br> also Best of Legs, erhöht werden sollen oder nicht.<br> Es wird dann automatisch in der angegebenen Runde bzw.<br> den folgenden Runden Best of Legs erhöht.<br> z.B. Start mit Best of 3 - Auswahl: ab Achtelfinale<br> heißt, dass ab dem Achtelfinale Best of 5, beim<br> Viertelfinale Best of 7, beim Halbfinale Best of 9<br> gespielt wird.</html>");

        bG_traiselegs.add(rb_nicht);
        rb_nicht.setSelected(true);
        rb_nicht.setText("Nicht");
        rb_nicht.setToolTipText("<html>Wählen sie hier ob die Anzahl der zu spielenden Legs,<br> also Best of Legs, erhöht werden sollen oder nicht.<br> Es wird dann automatisch in der angegebenen Runde bzw.<br> den folgenden Runden Best of Legs erhöht.<br> z.B. Start mit Best of 3 - Auswahl: ab Achtelfinale<br> heißt, dass ab dem Achtelfinale Best of 5, beim<br> Viertelfinale Best of 7, beim Halbfinale Best of 9<br> gespielt wird.</html>");

        bG_traiselegs.add(rb_runde);
        rb_runde.setText("pro Runde");
        rb_runde.setToolTipText("<html>Wählen sie hier ob die Anzahl der zu spielenden Legs,<br> also Best of Legs, erhöht werden sollen oder nicht.<br> Es wird dann automatisch in der angegebenen Runde bzw.<br> den folgenden Runden Best of Legs erhöht.<br> z.B. Start mit Best of 3 - Auswahl: ab Achtelfinale<br> heißt, dass ab dem Achtelfinale Best of 5, beim<br> Viertelfinale Best of 7, beim Halbfinale Best of 9<br> gespielt wird.</html>");

        bG_traiselegs.add(rb_achtel);
        rb_achtel.setText("ab Achtelfinale");
        rb_achtel.setToolTipText("<html>Wählen sie hier ob die Anzahl der zu spielenden Legs,<br> also Best of Legs, erhöht werden sollen oder nicht.<br> Es wird dann automatisch in der angegebenen Runde bzw.<br> den folgenden Runden Best of Legs erhöht.<br> z.B. Start mit Best of 3 - Auswahl: ab Achtelfinale<br> heißt, dass ab dem Achtelfinale Best of 5, beim<br> Viertelfinale Best of 7, beim Halbfinale Best of 9<br> gespielt wird.</html>");

        bG_traiselegs.add(rb_viertel);
        rb_viertel.setText("ab Viertelfinale");
        rb_viertel.setToolTipText("<html>Wählen sie hier ob die Anzahl der zu spielenden Legs,<br> also Best of Legs, erhöht werden sollen oder nicht.<br> Es wird dann automatisch in der angegebenen Runde bzw.<br> den folgenden Runden Best of Legs erhöht.<br> z.B. Start mit Best of 3 - Auswahl: ab Achtelfinale<br> heißt, dass ab dem Achtelfinale Best of 5, beim<br> Viertelfinale Best of 7, beim Halbfinale Best of 9<br> gespielt wird.</html>");

        lbl_tfinal.setLabelFor(txt_tfinalsets);
        lbl_tfinal.setText("Finalmodus:");
        lbl_tfinal.setToolTipText("<html>KEIN PFLICHTFELD<br> Geben sie hier ein, wie das Finale gespielt werden soll.<br> Werden keine Sets angegeben, so wird einfaches <br> Best of Legs gespielt.</html>");

        txt_tfinalsets.setToolTipText("<html>KEIN PFLICHTFELD<br> Geben sie hier ein, wie das Finale gespielt werden soll.<br> Werden keine Sets angegeben, so wird einfaches <br> Best of Legs gespielt.</html>");

        lbl_tfinalsets.setLabelFor(txt_tfinalsets);
        lbl_tfinalsets.setText("Sets");
        lbl_tfinalsets.setToolTipText("<html>KEIN PFLICHTFELD<br> Geben sie hier ein, wie das Finale gespielt werden soll.<br> Werden keine Sets angegeben, so wird einfaches <br> Best of Legs gespielt.</html>");

        txt_finallegs.setToolTipText("<html>PFLICHTFELD<br> Geben sie hier Best of Legs für das Finale an.</html>");

        lbl_tfinallegs.setLabelFor(txt_finallegs);
        lbl_tfinallegs.setText("Legs");
        lbl_tfinallegs.setToolTipText("<html>PFLICHTFELD<br> Geben sie hier Best of Legs für das Finale an.</html>");

        lbl_avg.setText("AVG - Berechnung:");
        lbl_avg.setToolTipText("<html>Entscheiden sie hier ob der Average berechnet<br> werden soll oder nicht. Die Angabe entscheidet hier<br> wie die Ergebniseingabe aussehen wird.<br><br> AVG = Ja<br> Es MUSS dann angegeben werden, wer ein Leg begonnen<br> hat, wieviele Darts geworfen wurden und wieviel Rest<br> der Verlierer des Legs noch hatte.<br><br> AVG = Nein<br> Es wird lediglich erfasst, in welchem Legverhältnis<br> das Spiel gespielt wurde.</html>");

        bG_tavg.add(rb_tavgja);
        rb_tavgja.setSelected(true);
        rb_tavgja.setText("Ja");
        rb_tavgja.setToolTipText("<html>Entscheiden sie hier ob der Average berechnet<br> werden soll oder nicht. Die Angabe entscheidet hier<br> wie die Ergebniseingabe aussehen wird.<br><br> AVG = Ja<br> Es MUSS dann angegeben werden, wer ein Leg begonnen<br> hat, wieviele Darts geworfen wurden und wieviel Rest<br> der Verlierer des Legs noch hatte.<br><br> AVG = Nein<br> Es wird lediglich erfasst, in welchem Legverhältnis<br> das Spiel gespielt wurde.</html>");

        bG_tavg.add(rb_tavgnein);
        rb_tavgnein.setText("Nein");
        rb_tavgnein.setToolTipText("<html>Entscheiden sie hier ob der Average berechnet<br> werden soll oder nicht. Die Angabe entscheidet hier<br> wie die Ergebniseingabe aussehen wird.<br><br> AVG = Ja<br> Es MUSS dann angegeben werden, wer ein Leg begonnen<br> hat, wieviele Darts geworfen wurden und wieviel Rest<br> der Verlierer des Legs noch hatte.<br><br> AVG = Nein<br> Es wird lediglich erfasst, in welchem Legverhältnis<br> das Spiel gespielt wurde.</html>");

        lbl_tsystem.setText("Was soll gespielt werden:");

        bG_tsystem.add(rb_rr);
        rb_rr.setText("Round Robin");
        rb_rr.setToolTipText("<html>ROUND ROBIN<br> Bei dieser Turnierform spielt jeder gegen jeden.<br> Daraus entsteht eine Tabelle aus der der Sieger<br> hervorgeht aus der Anzahl der Punkte.<br> Zur Orientierung:<br> Es müssen, bei einer Anzahl von 5 Spielern,<br> nach der Formel ((n * n) - n) / 2,<br> 20 Spiele gespielt werden.<br> Punkte werden entsprechend den gewonnen Spielen<br> vergeben. Beispiel bei Best of 3:<br> 2:0 = 2 Punkte<br> 2:1 = 1 Punkt<br> 0:2 = 0 Punkte</html> ");

        bG_tsystem.add(rb_rrko);
        rb_rrko.setText("Round Robin mit K.O.");
        rb_rrko.setToolTipText("<html>ROUND ROBIN MIT K.O.<br> Diese Turnierform zeichnet sich dadurch aus, daß<br> praktisch 2 Turniere zusammengeführt werden<br> In mehreren Gruppen wird jeweils ein Round<br> Robin gespielt, woraus ein, zwei oder drei<br> Spieler pro Gruppe, einzug in das K.O. Turnier<br> halten</html>");

        bG_tsystem.add(rb_rrdko);
        rb_rrdko.setText("Round Robin mit Doppel K.O.");
        rb_rrdko.setToolTipText("<html>ROUND ROBIN MIT Doppel K.O.<br> Diese Turnierform zeichnet sich dadurch aus, daß<br> praktisch 2 Turniere zusammengeführt werden<br> In mehreren Gruppen wird jeweils ein Round<br> Robin gespielt, woraus ein, zwei oder drei<br> Spieler pro Gruppe, einzug in das Doppel K.O.<br> Turnier halten.<br> Eigenart des Doppel K.O. ist, daß man nicht nach<br> dem ersten verlorenen Spiel ausscheidet, sondern<br> noch immer über die Verliererseite in das Finale<br> des Turniers einzug halten kann.</html> ");

        bG_tsystem.add(rb_ko);
        rb_ko.setSelected(true);
        rb_ko.setText("K.O. System");
        rb_ko.setToolTipText("<html>K.O. SYSTEM>br> Einfaches Turniersystem, bei welchem Teilnehmer<br> gegeneinander gelost werden und sobald man einmal<br> verloren hat ausscheidet.</html>");

        bG_tsystem.add(rb_dko);
        rb_dko.setText("Doppel K.O.");
        rb_dko.setToolTipText("<html>DOPPEL K.O. SYSTEM<br> Einfaches Turniersystem, bei welchem Teilnehmer<br> gegeneinander gelost werden und man bei einer<br> Niederlage auf der Verliererseite weiterspielen<br> und so noch weiter Chancen auf den Turniersieg hat.</html>");

        bG_tsystem.add(rb_ss);
        rb_ss.setText("Schweizer System");
        rb_ss.setToolTipText("<html>SCHWEIZER SYSTEM<br> Das Schweizer System ist eine Sonderform des<br> bekannten Round Robin.<br> Hierbei werden unter den Teilnehmern die Paarungen<br> gelost. Aus dieser Losrunde entsteht eine Tabelle,<br> die nun für die folgende Runde dazu dient die<br> Paarungen zu ermitteln. Es spielt im folgenden<br> immer der Beste gegen den Zweitplatzierten, der<br> Dritte gegen den Vierten usw., sofern diese Paarung<br> noch nicht gespielt wurde. Wurde eine Paarung<br> schon gespielt, z.B. der Erste gegen den Zweiten,<br> spielt der Erste gegen den Dritten und der<br> Zweite gegen den Vierten.<br> Je mehr Runden gespielt werden, um so detailierter<br> wird sich das Mittelfeld in der Leistung darstellen.<br> Es sollten mindesten soviele Runden gespielt werden,<br> wie bei einem K.O. System nötig sind um den Sieger<br> zu ermitteln.<br> Je nach Teilnehmerzahl wird das System entscheiden<br> wie viele Gruppen mit wievielen Teilnehmern zu<br> erstellen sind und diese Verwalten.</html>");

        b_tupload.setText("Durchsuchen");
        b_tupload.setToolTipText("<html>Teilnehmerdatei auf ihrem Computer auswählen<br> Die Datei MUSS im txt Format nach folgendem Muster<br> vorliegen:<br><br> Mitgliedernummer,Vorname Nachname,Verein,Setzplatz<br><br> Mitgliedernummer (Alphanumerisch) z.B. HE3148<br> Vorname Nachname z.B. Robert Meyer<br> Verein (Alphanumerisch) z.B. DC Krone<br> Setzplatz (Nummerisch) z.B. 16<br><br> HE3148,Robert Meyer,DC Krone,16<br><br> <br>Der Setzplatz ist optional, sofern keine<br> Spieler gesetzt werden sollen.<br><br> HE3148,Robert Meyer,DC Krone</html>");

        lbl_tupload.setLabelFor(txt_tupdate);
        lbl_tupload.setText("Teilnehmerdatei auswählen:");
        lbl_tupload.setToolTipText("<html>Teilnehmerdatei auf ihrem Computer auswählen<br> Die Datei MUSS im txt Format nach folgendem Muster<br> vorliegen:<br><br> Mitgliedernummer,Vorname Nachname,Verein,Setzplatz<br><br> Mitgliedernummer (Alphanumerisch) z.B. HE3148<br> Vorname Nachname z.B. Robert Meyer<br> Verein (Alphanumerisch) z.B. DC Krone<br> Setzplatz (Nummerisch) z.B. 16<br><br> HE3148,Robert Meyer,DC Krone,16<br><br> <br>Der Setzplatz ist optional, sofern keine<br> Spieler gesetzt werden sollen.<br><br> HE3148,Robert Meyer,DC Krone</html>");

        txt_tupdate.setToolTipText("<html>Teilnehmerdatei auf ihrem Computer auswählen<br> Die Datei MUSS im txt Format nach folgendem Muster<br> vorliegen:<br><br> Mitgliedernummer,Vorname Nachname,Verein,Setzplatz<br><br> Mitgliedernummer (Alphanumerisch) z.B. HE3148<br> Vorname Nachname z.B. Robert Meyer<br> Verein (Alphanumerisch) z.B. DC Krone<br> Setzplatz (Nummerisch) z.B. 16<br><br> HE3148,Robert Meyer,DC Krone,16<br><br> <br>Der Setzplatz ist optional, sofern keine<br> Spieler gesetzt werden sollen.<br><br> HE3148,Robert Meyer,DC Krone</html>");

        b_ok.setForeground(new java.awt.Color(153, 153, 0));
        b_ok.setText("Turnier anlegen");
        b_ok.setToolTipText("Das Turnier kann beginnen");

        bG_twer.add(rb_jugend);
        rb_jugend.setText("Jugend");
        rb_jugend.setToolTipText("Bitte auswählen");

        b_reset.setForeground(new java.awt.Color(204, 51, 0));
        b_reset.setText("Zurücksetzen");
        b_reset.setToolTipText("Eingaben zurücksetzen");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(54, 54, 54)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator3, javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(b_reset)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(b_ok, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbl_tupload, javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(lbl_tname, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(txt_tname, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(29, 29, 29)
                                .addComponent(lbl_tort)
                                .addGap(18, 18, 18)
                                .addComponent(txt_tort, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(41, 41, 41)
                                .addComponent(lbl_tdatum)
                                .addGap(18, 18, 18)
                                .addComponent(txt_tdatum, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGap(166, 166, 166)
                                .addComponent(txt_tupdate, javax.swing.GroupLayout.PREFERRED_SIZE, 228, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(b_tupload))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(lbl_avg)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(rb_tavgja)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(rb_tavgnein))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(lbl_tfinal)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txt_tfinalsets, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbl_tfinalsets)
                                .addGap(18, 18, 18)
                                .addComponent(txt_finallegs, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbl_tfinallegs))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(lbl_tsystem)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(rb_ko)
                                    .addComponent(rb_rr))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(rb_dko)
                                    .addComponent(rb_rrko))
                                .addGap(8, 8, 8)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(rb_ss)
                                    .addComponent(rb_rrdko)))
                            .addComponent(jSeparator4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 663, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(rb_steel)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(rb_einzel)
                                            .addComponent(rb_damen))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(rb_doppel)
                                            .addComponent(rb_herren))))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(rb_edart)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(rb_team)
                                            .addComponent(rb_jugend))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(rb_mixed))))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(lbl_traiselegs, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(rb_nicht))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(txt_tboards, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(lbl1_tsets)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(txt_tsets, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(lbl2_tsets)
                                        .addGap(18, 18, 18)
                                        .addComponent(lbl1_tlegs)
                                        .addGap(7, 7, 7)
                                        .addComponent(txt_tlegs, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(lbl2_tlegs))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(rb_runde)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(rb_achtel)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(rb_viertel)))))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap(55, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(45, 45, 45)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txt_tname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_tname)
                    .addComponent(lbl_tort)
                    .addComponent(txt_tort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_tdatum)
                    .addComponent(txt_tdatum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rb_steel, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(rb_edart))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(rb_einzel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rb_damen))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(rb_team)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(rb_jugend)
                            .addComponent(rb_mixed)))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(rb_doppel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rb_herren)))
                .addGap(18, 18, 18)
                .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl1_tsets)
                    .addComponent(txt_tsets, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl2_tsets)
                    .addComponent(lbl1_tlegs)
                    .addComponent(lbl2_tlegs)
                    .addComponent(jLabel4)
                    .addComponent(txt_tboards, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_tlegs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_traiselegs)
                    .addComponent(rb_nicht)
                    .addComponent(rb_runde)
                    .addComponent(rb_achtel)
                    .addComponent(rb_viertel))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_tfinal)
                    .addComponent(txt_tfinalsets, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_tfinalsets)
                    .addComponent(txt_finallegs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_tfinallegs))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_avg)
                    .addComponent(rb_tavgja)
                    .addComponent(rb_tavgnein))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_tsystem)
                    .addComponent(rb_rr)
                    .addComponent(rb_rrko)
                    .addComponent(rb_rrdko))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rb_ko)
                    .addComponent(rb_dko)
                    .addComponent(rb_ss))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_tupload)
                    .addComponent(b_tupload)
                    .addComponent(txt_tupdate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(b_ok)
                    .addComponent(b_reset))
                .addContainerGap(24, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                       

    private void txt_tnameActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                         

    private void txt_tboardsActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
    }                                           

    private void rb_doppelActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                         

    private void steeldart(java.awt.event.ActionEvent evt) {                           
        // TODO add your handling code here:
    }                         

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(ParaFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(ParaFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(ParaFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(ParaFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ParaFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.ButtonGroup bG_tart;
    private javax.swing.ButtonGroup bG_tavg;
    private javax.swing.ButtonGroup bG_traiselegs;
    private javax.swing.ButtonGroup bG_tspielermodus;
    private javax.swing.ButtonGroup bG_tsystem;
    private javax.swing.ButtonGroup bG_twer;
    private javax.swing.JButton b_ok;
    private javax.swing.JButton b_reset;
    private javax.swing.JButton b_tupload;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JSeparator jSeparator3;
    private javax.swing.JSeparator jSeparator4;
    private javax.swing.JLabel lbl1_tlegs;
    private javax.swing.JLabel lbl1_tsets;
    private javax.swing.JLabel lbl2_tlegs;
    private javax.swing.JLabel lbl2_tsets;
    private javax.swing.JLabel lbl_avg;
    private javax.swing.JLabel lbl_tdatum;
    private javax.swing.JLabel lbl_tfinal;
    private javax.swing.JLabel lbl_tfinallegs;
    private javax.swing.JLabel lbl_tfinalsets;
    private javax.swing.JLabel lbl_tname;
    private javax.swing.JLabel lbl_tort;
    private javax.swing.JLabel lbl_traiselegs;
    private javax.swing.JLabel lbl_tsystem;
    private javax.swing.JLabel lbl_tupload;
    private javax.swing.JRadioButton rb_achtel;
    private javax.swing.JRadioButton rb_damen;
    private javax.swing.JRadioButton rb_dko;
    private javax.swing.JRadioButton rb_doppel;
    private javax.swing.JRadioButton rb_edart;
    private javax.swing.JRadioButton rb_einzel;
    private javax.swing.JRadioButton rb_herren;
    private javax.swing.JRadioButton rb_jugend;
    private javax.swing.JRadioButton rb_ko;
    private javax.swing.JRadioButton rb_mixed;
    private javax.swing.JRadioButton rb_nicht;
    private javax.swing.JRadioButton rb_rr;
    private javax.swing.JRadioButton rb_rrdko;
    private javax.swing.JRadioButton rb_rrko;
    private javax.swing.JRadioButton rb_runde;
    private javax.swing.JRadioButton rb_ss;
    private javax.swing.JRadioButton rb_steel;
    private javax.swing.JRadioButton rb_tavgja;
    private javax.swing.JRadioButton rb_tavgnein;
    private javax.swing.JRadioButton rb_team;
    private javax.swing.JRadioButton rb_viertel;
    private javax.swing.JTextField txt_finallegs;
    private javax.swing.JTextField txt_tboards;
    private javax.swing.JTextField txt_tdatum;
    private javax.swing.JTextField txt_tfinalsets;
    private javax.swing.JTextField txt_tlegs;
    private javax.swing.JTextField txt_tname;
    private javax.swing.JTextField txt_tort;
    private javax.swing.JTextField txt_tsets;
    private javax.swing.JTextField txt_tupdate;
    // End of variables declaration                   
}
 

AndiE

Top Contributor
Du kennst Perl/Tk? genauso ist es in Java auch. Aber wir können hier nicht die Grundlagen von Java durchkauen. Ich empfehle, meinen Weg mal auszuprobieren und man die Ansetzungen auszugeben. Und dann von der Seite aus, die Sache aufzurollen. Die Parameter kannst du ja auch erstmal fest anweisen.
 

Neue Themen


Oben