Actionlistener

MB.Drake

Mitglied
Hallo, wir haben in Informatik ein Appletprojekt und um einige bugs noch zu beheben müsste ich Radiobuttons mit einem Actionlistener versehen. Einen Actionlistener habe ich implementiert und er funktioniert für buttons einwandfrei. Nun das Problem : wenn ich den ActionListener nun einem Radionbutton hinzufügen will, dann klappt es nicht und es gibt mir eine Fehlermedlung beim compilen.
Natürlich habe ich lange Zeit gegoogelt um eine Lösung zu finden, jedoch war alles was ich gefunden Habe einen Radiolistener zu implementieren oder einen Actionlistener als Objekt zu erschaffe. Jedoch beides ohne Erfolg, da beide die Methode actionperformed benötigen, die aber ja schon in der Klasse vorhanden ist und für den anderen Listener einwandfrei funktioniert ( 😵 ). Ich hoffe jemand kann mir helfen und bedanke mich schonmal für das lesen des Threads.
 
Zuletzt bearbeitet von einem Moderator:
dann klappt es nicht und es gibt mir eine Fehlermedlung beim compilen.

Wie lautet denn die Fehlermeldung?

Es gibt mehrere Möglichkeiten für ActionListener. Entweder als innere anonyme Klasse, oder so wie du es gemacht hast, den ActionListener implementieren und in der actionPerformed-Methode dann unterscheiden, wer aufruft. Das geht mit dem source oder mit einem ActionCommand. Eine andere Möglichkeit wäre noch eine eigene Klasse mit ActionListener erstellen.
 
Also implementiert habe ich ihn so
Java:
 public class SCHIEBUNG extends JApplet implements MouseListener, ActionListener

naja und meine Fehlermeldung wenn ich ein weiteres Objekt für den Actionlistener schaffen will: "java.awt.event.ActionListener is abstract; cnnot be instantiated " also im Klartext es fehlt ihm die actionperformed Methode

wenn ich es wie bei normalen Buttons mache, mit : radio1.addActionListener(this);
dann krieg ich die Fehlermeldung : cannot find symbol - method addActionListener(SCHIEBUNG)
 
Zuletzt bearbeitet:
Code fehlt nach wie vor zu Teilen

folgendes vollständige(!) Testprogramm kompiliert bei mir, bei dir nicht?

Java:
import javax.swing.JApplet;
import javax.swing.JRadioButton;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Test {
    public static void main(String[] args)   {
        System.out.println("nix los");
    }

    public class SCHIEBUNG2     extends JApplet      implements ActionListener   {

        public SCHIEBUNG2()
        {
            JRadioButton radio1 = new JRadioButton();
            radio1.addActionListener(this);
        }

        public void actionPerformed(ActionEvent _e)
        {
        }
    }
}

hast du zufällig ein eigenes Interface, das ActionListener heißt?
na wäre bei dir wohl in Großbuchstaben..

was ist radio1 bei dir, das scheint die wichtigste Frage zu sein?
 
Zuletzt bearbeitet von einem Moderator:
Java:
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/**
 * Schiebung ist ein Spiel, bei dem 2 Spieler, mit jeweils unterschiedlich gefärbten Steinen, gegeneinander antreten und abwechselnd ihre eigenen Steine bewegen
 * Die Steine können wie die Dame beim Schach bewegt werden und es können entweder 1 Stein oder 2 Steine bewegt werden.
 * Sollen 2 Steine bewegt werden, dann müssen sie beide in die gleiche Richtung und um die gleiche Felderzahl verschoben bewegt werden.
 * Gewonnen hat derjenige Spieler, der zuerst ein Quadrat aus seinen Steinen bilden kann.
 * @author (Dennis Birke und Lisa Bayer) 
 * @version (2.9)
 */
public class SCHIEBUNG extends JApplet implements MouseListener, ActionListener // Das Applet wird Deklariert und mit einem MouseListener und einem ActionListener versehen
{
    
    SCORE score; // score ist ein Referenzattribut zur Klasse Score, welches dazu dient den Spielstand, also die Anzahl der Siege der jeweiligen Spieler, anzuzeigen
    
    FELD [][] feld = new FELD [8][8]; // Die Felder des Spielfelds setzen sich aus jeweils einzelnen Objekten der Klasse Feld zusammen, für die hier ein Array angelegt wird
    FELD [] array = new FELD [4]; // ein weiterer Array für die Objekte der Klasse Feld wird angelegt. Er dient nur zur kurzweiligen Abspeicherung bestimmter Felder die für das Ziehen benötigt werden
    int xpos,ypos,z,xplus,yplus; // Integer deren Verwendung noch erläutert wird
    boolean gewonnen; // wird auf true gesetzt, wenn ein Spieler die Siegesbedingung erfüllt hat
    TextField nameField; 
    
    Button move, start, neu; // diverse Buttons
    CheckboxGroup radioGroup;  
    Checkbox radio1; // Radiobutton für das ziehen mit einem Spielstein
    Checkbox radio2; // Radiobutton für das ziehen mit zwei Spielsteinen
    public static Image red_stone = null;
    public static Image black_stone = null;

    public void init()
    { 
       
        z = 0; // Zeigt an welcher Spieler am Zug ist
        red_stone = getImage(getCodeBase(), "rot.png"); // eigens entworfene Spielsteine werden aus dem Ordnerpfad importiert; hier rot
        black_stone = getImage(getCodeBase(), "schwarz.png"); // hier schwarz
        score = new SCORE(); 
        gewonnen = false;
        setLayout(null); // es wrd kein bestimmtes Layout verwendet
        nameField = new TextField("die grau eingefärbten Felder zeigen für das Ziehen mögliche Felder bzw Steine an",80);
        nameField.setBounds(140,500,240,40);
        move = new Button("bewegen");  //Button der für die Bestigung eines Spielzuges nötig ist
        start = new Button("Spiel starten"); // Button der das Spiel Startet 
        neu = new Button("neues Spiel"); // Button für ein erneutes Spielen (erst möglich wenn ein Spieler gewonnen hat)
        radioGroup = new CheckboxGroup();  
        radio1 = new Checkbox("Radio1", radioGroup,true); // Es wird zunächst davon ausgegangen dass der Spieler einen Stein bewegen möchte  
        radio2 = new Checkbox("Radio2", radioGroup,false); 
        move.setBounds(475,180,100,30);  // Positionen und Maße der Buttons werden festgelegt
        start.setBounds(210,450,100,30);
        neu.setBounds(600,180,100,30);
        radio1.setBounds(450,120,10,10); 
        radio2.setBounds(450,150,10,10);
        /* Buttons und Textfeld werden letzlich zur Verfügung gestellt */
        add(move);  
        add(start);
        add(neu);
        add(radio1); 
        add(radio2);
        add(nameField);
        /* diverse Listener werden hinzugefügt*/
        move.addActionListener(this);  
        start.addActionListener(this);
        neu.addActionListener(this);
        addMouseListener(this);
        /* nur für die Verwendung in Browsern nötig*/
        JRootPane rootPane = this.getRootPane(); 
        rootPane.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
        radio1.addActionListener(this);
ich hoffe du kannst damit nun etwas anfangen
 
aja, eine Checkbox soll man unter dem Namen 'RadioButton' erkennen,
freilich hatte ich das gerade auch wieder nachgeschlagen, ist die AWT-Lösung dafür

das hier ist wohl das Maximum der Freude:
CheckboxGroup : Java Glossary
mit ItemListener
 

Neue Themen


Zurück
Oben