[Java] Problem mit ActionListener

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Sniper278, 26. Mai 2007 .

Schlagworte:
  1. 26. Mai 2007
    Problem mit ActionListener

    Hallo,

    Bin immer noch an meinem kleinen Spiel (Vier gewinnt)

    hab ein kleines Problem mit dem ActionListener:
    Und zwar soll er erstmal entscheiden ob es noch ein freies Feld gibt oder nicht.
    Dann den aktuellen Spieler unterscheiden und dementsprechen das Feld färben.
    Wenn es schon gefärbt ist, gibt er einen Fehlerton aus.
    Wenn alle Felder belegt sind, dann soll ein Text an ein JLabel (hinweise) schicken, damit der Spieler darauf hingewiesen wird, dass das Spiel zu ende ist.
    Aber das Problem ist dass er das JLabel hinweise nicht kennt, weil es nicht in der Klasse actionPerformed steht. Gibt es einen weg das an die äußere Klasse zu schicken. Denn wenn ich das JLabel in der Klasse definiere, dann findet die äußere Klasse wiederum das JLabel nicht. :angry:

    Ich weis sieht ziemlich verwirrend aus. Ist auch mein erstes Projekt und ich bin viel am experimentieren. Aber wenn ich einfach eine extra Klasse public void actionPerformed schreibe, dann bringt er immer Fehler. Deswegen hab ich es gleich in den Befehl new ActionListener() geschrieben.

    Ich hoffe ihr könnt mir einiger Maßen folgen.

    mfg
    sniper278
     
  2. 26. Mai 2007
    AW: Problem mit ActionListener

    hi Sniper278,

    da hast du dir aber was vorgenommen!!!

    ich würde dir vorschlagen, dass du in der if-bedinung einfach eine methode schreibst, die dann das jlabel auf den gewünschten wert setzt.

    aber du musst dafür in der fenster-klasse, das jlabel auf null setzten. wenn er dann in die methode springt, wo er sagen, soll das das game zu ende ist, dann überschreibt er dir die variable.

    ich hoffe es ist nicht so kompliziert beschrieben.

    wie machst du das genau mit jframes oder als applet? mich würde auch mal interessieren, wie du deine spielfelder deklarierst hast??? als matrix evt???


    schönen abend noch und viel spass beim bastel.

    harry
     
  3. 27. Mai 2007
    AW: Problem mit ActionListener

    Das Thema in der Schule ist Grafische Oberflächen, deshalb hab ich ein JFrame benutzt.
    Ursprünglich hab ich das ganze in NetBenas einfach nur auf ein panel gesetzt. Aber damit konnt ich später nicht viel anfangen, weil NetBeans den Code im Hintergrund erstellt. Hab dann halt versucht das ganze allein hin zu bekommen.
    Ich hab eine for-Schleife benutzt die mir 42 JButtons erstellt. Die kann ich ja dann durch GridLayout in das gewünschte Muster bringen.
    So richtig hab ich das gerade nicht verstanden. Denn die If-Bedingung im ActionListener setzt doch das JLabel auf einen bestimmten Wert. Nur kann die Methode nix damit anfangen weil sie nicht weis was "hinweise" ist.
    Ich hab ja in der Fenster-Klasse das JLabel so definiert:
    Wie setzt man das auf null ???

    Edit: Mir ist grad noch eingefallen, dass die Fehlermeldung ganz hilfreich wäre:
    "Local variable hinweise is accessed from within inner class; needs to be declared final"
     
  4. 28. Mai 2007
    AW: Problem mit ActionListener

    die fehlermeldung sagt im groben, dass die variable auf eine innere-klasse verweist, deshalb sollst du sie als final deklarien. was bedeutet, dass sie geschützt wird und nicht weiter vererbt wird.

    ich meine, du deklarierst, bzw legst ein neues objekt jlabel an.
    Code:
    JLabel hinweise = new JLabel();
    hinweise.getText(null);
    ...
    //in deiner Methode überschreibst du sie dann
    hinweise.getText("das game ist zu ende");
    
    aber natürlich musst du sie in deinem frame noch plazieren!!! wenn alle stricke reissen, dann machst du einfach ein JOptionPane.showMessageDialog(null,"das game ist zu ende");

    viel spass noch

    harry
     
  5. 28. Mai 2007
    AW: Problem mit ActionListener

    Wenn ich den Code so schreibe:
    kommt folgende Fehlermeldung:
    getText() in javax.swing.JLabel cannot be applied to (<nulltype>)

    Wie soll ich hinweise final deklarieren, die variable verändert sich doch ?(

    Mit dem JOptionPane funktioniert es aber. Ich denke das sollte für das Spiel genügen.
    Bin schließlich ein Anfänger und unser Lehrer kann es ja selbst nicht besser ;-)

    Danke! Ich geb dir ne gute Bewertung
     
  6. 29. Mai 2007
    AW: Problem mit ActionListener

    meines wissens funktioniert das getText anders, ich glaube es genügt einfach hinweise.getText() zu machen um den Text zu bekommen, und hinweise.setText("dein Text") um den neuen text zu schreiben.
     
  7. 29. Mai 2007
    AW: Problem mit ActionListener

    das hab ich schon versucht swissmaster. Geht leider nicht.
     
  8. 4. Juni 2007
    AW: Problem mit ActionListener

    Das würde dann so aussehen:
    Code:
    final Label Hinweise = new Label ("ka");
    Dann einfach mit Hinweise.getText(); den Inhalt abrufen und mit Hinweise.setText(""); den Inhalt auf den gewünschten Text ändern.
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.