tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
245
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Crashkurs Crashkurs ist offline Grünschnabel
    Registriert seit
    Sep 2011
    Beiträge
    2
    Hey Leute,
    habe ein kleines Problem, und zwar soll ich Kniffel im Netzwerk realisieren, wobei ich 5 Checkboxen habe, womit der Benutzer ankreuzen kann, welche Würfe er behalten will. Jedes Mal, wenn ein Benutzer eine Checkbox anclickt, möchte ich an den Server einen String senden, in dem die Nummer der Checkbox und der Status gespeichert ist. Nachdem das dritte Mal geworfen wurde, sollen diese Checkboxen deaktiviert werden, damit man keine weiteren Nachrichten durch anclicken von diesen an den Server sendet.
    Nun zu meinem Problem: Nachdem diese Checkboxen deaktivert wurden, wird die Methode ItemStateChanged(ItemEvent ie) vom ItemListener dauerhaft aufgerufen, wobei jedes Mal ein oder mehrere Checkboxen vom Status(Selected/Deselected) her verändert wurden. Habe schon versucht, die Checkboxen vor dem Deaktivieren auf Deselected zu setzen. Dies klappt aber leider auch nicht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    public void setzeItemListener(ItemListener il)
        {
            c1.addItemListener(il);
            c2.addItemListener(il);
            c3.addItemListener(il);
            c4.addItemListener(il);
            c5.addItemListener(il);
        }
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    public void itemStateChanged(ItemEvent ie)
        {
            if(anzahlKlicks != 3)
            {
                kc.halten();
            }
        }
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     public void halten()
        {
            boolean[] halt = new boolean[5];
            halt[0] = w.wb.c1.isSelected();
            halt[1] = w.wb.c2.isSelected();
            halt[2] = w.wb.c3.isSelected();
            halt[3] = w.wb.c4.isSelected();
            halt[4] = w.wb.c5.isSelected();
            kc.send("Halten#"+halt[0]+"#"+halt[1]+"#"+halt[2]+"#"+halt[3]+"#"+halt[4]);
        }
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    anzahlKlicks++;
                if(anzahlKlicks==1)
                {
                    wb.setzeCheckboxStatus(true);
                    wb.würfeln(anzahlKlicks);
                    kc.gewürfelt();
                    wb.anzahlWürfe.setText(" Wurf 1 von 3 ");
                    d.esIstGewürfeltWorden();
                    Kniffelkarte k = kc.k;
                    int nummer = kc.aktiverSpieler;//Aktiviere Eintrags-Buttons
                    k.aktiverSpielerButtonsSetEnabled(nummer,true);
                }
     
                if(anzahlKlicks==2)
                {
                    wb.würfeln(anzahlKlicks);
                    kc.gewürfelt();
                    wb.anzahlWürfe.setText(" Wurf 2 von 3 ");
                }
     
                if(anzahlKlicks==3)
                {
                    wb.würfeln(anzahlKlicks);
                    kc.gewürfelt();
                    wb.setzeCheckboxStatus(false);
                    wb.b2.setEnabled(false);
                    
                    wb.anzahlWürfe.setText(" keine Würfe mehr ");
                }

    Hoffe ihr könnt mir helfen, ich nämlich mir nicht mehr
    Gruß,
    Crashkurs
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Hey,

    bitte benutze für Java Code entspreche Java-Tags anstatt Code-Tags, das macht den Code leslicher...
    Zu deinem Problem: Wenn du wirklich bei jedem Klick den String an den Server schicken möchtest, dann empfehle ich dir den ActionListener anstatt ItemListener zu benutzen.
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  3. #3
    Crashkurs Crashkurs ist offline Grünschnabel
    Registriert seit
    Sep 2011
    Beiträge
    2
    Hey,
    Ok, das mit den Java-Tags werde ich mir merken
    Habe das Problem jetzt auch gefunden. Der Server leitet den String an alle Clienten weiter, welche die Checkboxen dann so einstellen, wodurch wieder ItemStateChanged aufgerufen wird und ein neuer String gesendet wird.

    Danke für den Tipp mit dem ActionListener, dann baue ich den ein
    Gruß
     

  4. #4
    SE Tutorials.de Gastzugang
    Tja ... bei so einem Protokoll-Fehler wird dir der ActionListener auch nicht helfen.
    Was du jetzt machen musst ist ist im Server eine Prüfung einbauen die checkt ob es dieses "Halten"-Commando ist oder nicht ... und bei zutreffen halt nur verarbeiten , jedoch nicht broadcasten.

    ps : makiere den Thread bitte als erledigt wenn dei Problem behoben ist.
     

Ähnliche Themen

  1. JToggleButton ändert Aussehen nicht nach setEnabled(false)
    Von mas666 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 11
    Letzter Beitrag: 22.06.10, 16:18
  2. OnPaint wird dauerhaft aufgerufen
    Von miamalzu im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 02.06.10, 14:21
  3. jsf: set-Methode wird nie aufgerufen
    Von schaefli im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 19.03.07, 00:54
  4. Kompletten JTable mittels setEnabled(false) ausgrauen?!
    Von Ravebaby im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 18.01.07, 12:33
  5. .exe datei wird aufgerufen!?
    Von bruderherz im Forum HTML & XHTML
    Antworten: 15
    Letzter Beitrag: 22.02.03, 13:37