ActionListener - ToggleButton als von KI geklickt "markieren"

Ceryin

Neues Mitglied
Servus und Aloha!

Ich hab für die Uni (2. Semster) die Aufgabe ein TicTacToe-Spiel mit einem Computergegner auszustatten.

Leider Gottes hänge ich an einem "dezenten" Problem.
Und zwar bekomme ich es nicht hin, das die KI "klickt" also ein Klick für den ActionListener simuliert.

Das "Spieler gegen Spieler" Prinzip funktioniert einwandfrei und wird auch korrekt ausgewertet - nur beim Versuch gegen die KI zu spielen, läuft alles schief das nur schief laufen kann.
Das "Spiel" startet erst, wenn man auf die Stelle klickt wo eigentlich das X des Com-Gegners sein sollte dann kann man sein O setzen und ab da ist Schicht. Er zählt zwar die Klicks (nach 9Klicks ohne Siegerfüllung wird das Spiel als Unentschieden gewertet) aber setzt sie nicht um.

Irgendein Bestandteil fehlt mir offensichtlich um der KI die Fähigkeit zu verpassen, Buttons zu "klicken"

Ich habs bereits mit ".setSelected(true)" und ".doClick()" probiert allerdings ohne Ergebnis

Anbei der JavaCode von meinem TicTacToe (samt den bisher eingefügten KI-Elementen)

Hoffe ihr könnt mir helfen =/

MfG
Ceryin

Java:
/* Worum geht es?
 * 
 * Ziel des Programm ist das Spiel TicTacToe zu bauen
 * In diesem Spiel spielen zwei Spieler gegeneinander und setzen abwechselnd
 * ein X bzw O in ein 3x3 Spielfeld
 * 
 * Gewonnen hat der Spieler, der als Erstes eine 3er Reihe diagonal, waagerecht oder senkrecht
 * mit seinem Symbol (X oder O) gefüllt hat.
 * 
 * Das Spiel endet Unentschieden, wenn alle Felder besetzt sind und kein Spieler
 * einen Sieg erringen konnte
 * 
 * Analyse der Anforderungen
 * 
 * Anzahl Spieler = 2
 * Spielfeld 3x3 Matrix
 *  
 *  Starten?
 *  	Spiel soll durch Klicken auf Button (Auswahl des Startspielers) gestartet werden
 *  
 *  Ende?
 *  	Spiel soll durch Sieg oder Unentschieden enden und das Spielende soll angezeigt
 *  	bzw sichtbar sein.
 *  		durch PopUp-Fenster
 *  		durch farbliche Markierung der Reihen
 *  
 *  Sieg?
 *  	Ein Sieg ist kann durch 2x 8 verschiedene Möglichkeiten erreicht werden
 *  		3 gleiche Symbole diagonal
 *  		3 gleiche Symbole waagerecht
 *  		3 gleiche Symbole senkrecht
 *  	Wenn keine Siegbedingung eintrifft, ist es automatisch ein Unentschieden
 *  	Damit müssen also 17 Möglichkeiten abgedeckt sein
 *  
 *  Spielablauf?
 *  	Das Spiel startet durch Auswahl des 1. Spielers
 *   		Bemerkung:  Freie Auswahl des Symbols für den Spieler?
 *   					Farbcodierung für die Symbole?
 *   	Die Spieler wechseln sich automatisch ab. Sobald ein Symbol gesetzt wurde,
 *   	ist der Spielzug des Spielers beendet und der andere Spieler darf sein Symbol setzen
 *  	Beide wechseln sich ab bis ein Endszenario ausgelöst wurde bzw wird.
 */


//Import

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;
	
/*Status: 
 * Player VS Player erledigt und funktionsfähig
 * Verkündung des Gewinners erfolgt Fehlerfrei
 * Unentschieden wird richtig gewertet
 * Neustart des Spieles nach Spielende erfolgt einwandfrei
 * 
 * Computergegner Problematisch - Start des Computers erst mit Klick vom "Anwender"
 * Computer-Spielerwechsel vollzieht sich wie geplant
 * Es werden jedoch die vom Computer gewählten Buttons nicht umgestellt
 * folglich kann das Spiel nicht weitergespielt werden und wird nach insgesamt 9Klicks mit "Unentschieden" gewertet
*/
public class TicTacToe extends JFrame implements ActionListener
{
	/* Da ein TicTacToe Feld gemeinhin IMMER ein 3x3 Feld aufweist,
	 * kann eine feste / fixierte Variable benutzt werden um die Arraygröße für die Buttons
	 * sowie die Berechnung der Siegbedingung zu erledigen
	 */
	
    final int SEITE=3; //fixe Variable zur Berechnung der Arraygröße und Überprüfung der Siegbedingungen etc
    
    JFrame optik = new JFrame("TicTacToe"); //erzeugt Hauptfenster und vergibt den Namen
    static JFrame panel = new JFrame("Auswahl"); //Frameerzeugung für das Auswahlfenster
    JToggleButton[] button = new JToggleButton[SEITE*SEITE]; //erzeugt Array für die Buttons anhand der festen Variable
    private String buchstabe = ""; //Variable zum Füllen der Buttons
    int Zug = 0; //Zählt die Züge (bei 9 Zügen und keiner Siegbedingungserfüllung = Unentschieden)
    boolean Sieg = false; //Variable um Siegbedingung zu prüfen - Standartmäßig auf False um Fehler zu vermeiden
    static boolean wer; //sagt welches Symbol anfängt und gerade dran ist
    
    static boolean com; // fängt ab, ob ein Spiel gegen ein Computer gestartet wurde
    static boolean player; //für das Spiel mit Computergegner
	
    public static void Auswahl() //Auswahlfenster - vorgeschaltet um Spielart zu bestimmen
 {
    	//Custom Text in den Buttons
    	Object[] options = {"Spieler vs Spieler: X startet", "Spieler vs Spieler: O startet","Computer vs. Spieler", "Beenden"};
    	
    	//PopUp Fenster samt Auswahlmöglichkeiten
    	int Whoisit = JOptionPane.showOptionDialog(panel, "Spielmodus wählen:"+"\nSpieler vs. Spieler welches Symbol soll starten? Bei Computer vs. Spieler startet der Computer mit X","Auswahl", 
    			JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[2]);
    			// ??, Fragetext, Titel des PopUps, Art/KLassifizierung der Buttons, Was für eine Fensterart ist es?, Was steht in den Buttons
    	
    	//Auswertung des Knopfdrucks
    	if (Whoisit == 0) // X
    	{
    		wer = true;
    	}else if (Whoisit == 1) //O
    	{
    		wer = false;
    	}else if (Whoisit == 2) // Spiel gegen Computergegner als X
    	{
    		com = true;
    	}else if (Whoisit == 3) //exit
    	{
    		System.exit(0);
    	}
 }
    
	public TicTacToe() //definiert Hauptfenster
		{
			Auswahl(); //Verweis auf Auswahl
		    optik.setSize(350,350); //Spielfeldgröße
		    optik.setLocation(350,175); //Wo ist das Fenster auf dem Bildschirm
		    optik.setLayout(new GridLayout(SEITE,SEITE)); //Layoutdefinition
		    optik.setVisible(true); //Sichtbarkeit
		    optik.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //was passiert bei Drücken auf X
		    Font font = new Font("Arial",Font.BOLD,80); //Verändert Schriftart, Schriftgröße und Schrifttyp
		    //Schriftfarbe ändern?

		    
		    for(int i=0;i<SEITE*SEITE;i++)
		    {
		    	button[i] = new JToggleButton("");
		    	optik.add(button[i]); //fügt Buttons zum Panel hinzu
		    	button[i].setFont(font); //verändert Buttonschriftart zum Vorgegebenen Wert
		    	// button[i].setFont(Color.white); Schriftfarbe??
		    	button[i].addActionListener(this);
		    }
		    
		    /*	Aufbau des Spielfeldes / des Arrayfeldes
		     * 	
		     * 	[0] [1] [2]
		     * 	[3] [4] [5]
		     * 	[6] [7] [8]
		     * 	
		     */	
		 }
	
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		new TicTacToe();
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0)
	{
		if (com == false) //"Normales Spiel" ohne Computer
		{
    		Zug++; //zählt die Züge um festzustellen, wann das Spielfeld "voll" ist (für Unentschieden wichtig)
			if (wer == true)//prüft welcher Spieler gerade am Zug war und 
			{
				wer = false; //switcht die Reihenfolge und
				buchstabe = "X"; //setz Buchstabe auf X
				//wäre vlt optional möglich ein Icon statt des Buchstabens einzufügen
			}
			else if (wer == false)
			{
				wer = true; //switcht die Reihenfolge und
				buchstabe = "O"; //setz Buchstabe auf O
				//wäre vlt optional möglich ein Icon statt des Buchstabens einzufügen
			}
			
			JToggleButton genutzerBut = (JToggleButton)arg0.getSource();
        	if (buchstabe == "X")
        	{
        		genutzerBut.setText(buchstabe); // setzt den Button auf einen Wert (Wert wird oben bestimmt)
        		genutzerBut.setBackground(Color.red); //färbt Button
        		genutzerBut.setEnabled(false); //sorgt dafür das gewählte Buttons nicht geändert werden können
        	}else
        	{
        		genutzerBut.setText(buchstabe); // setzt den Button auf einen Wert (Wert wird oben bestimmt)
        		genutzerBut.setBackground(Color.green); //färbt Button
        		genutzerBut.setEnabled(false); //sorgt dafür das gewählte Buttons nicht geändert werden können
        	}
			
		}else //Spiel gegen den Computer
		{
			Zug++; //zählt die Züge um festzustellen, wann das Spielfeld "voll" ist (für Unentschieden wichtig)
			JToggleButton genutzerBut = (JToggleButton)arg0.getSource();
			if (player == false) //für den aller ersten Zug - um das Spiel zu eröffnen
			{
    			buchstabe = "X"; //wird umgeschaltet um die Siegbedingungsüberprüfung zu gewährleisten
				if (Zug == 1)
				{
					/*	[0] [1] [2]
					 * 	[X] [4] [5]
					 * 	[6] [7] [8]	
					 */
					button[3].doClick();
					button[3].setText("X"); //macht den ersten Zug und setzt Button auf X
					button[3].setBackground(Color.red); //färbt Button
					button[3].setEnabled(false); //sperrt Button
					player = true; //wechsel wer gerade am Zug ist - Übergibt Zug an Spieler
				}else if (Zug == 3) //alle nachfolgenden Spielzüge des Computers
        		{
        			if (!(button[0].getText()=="O"))
        			{
        				/*	[X] [1] [2]
        				 * 	[X] [4] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[0].doClick();
        				button[0].setText("X");
        				button[0].setBackground(Color.red); //färbt Button
        				button[0].setEnabled(false);
        				player = true;
        			}else if (!(button[4].getText()=="O"))
        			{
        				/*	[0] [1] [2]
        				 * 	[X] [X] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[4].doClick();
        				button[4].setText("X");
        				button[4].setBackground(Color.red); //färbt Button
        				button[4].setEnabled(false);
        				player = true;
        			}else if (!(button[6].getText()=="O"))
        			{
        				/*	[0] [1] [2]
        				 * 	[X] [4] [5]
        				 * 	[X] [7] [8]	
        				 */
        				button[6].doClick();
        				button[6].setText("X");
        				button[6].setBackground(Color.red); //färbt Button
        				button[6].setEnabled(false);
        				player = true;
        			}
        		}else if (Zug == 5)
        		{
        			if((button[1].getText() == "O" && button[2].getText() == "O")) 
        			{
        				/*	[0] [_] [_]
        				 * 	[3] [4] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[0].doClick();
        				button[0].setText("X");
        				button[0].setBackground(Color.red); //färbt Button
        				button[0].setEnabled(false); //sperrt Button
        				player = true; //übergibt den Zug an den Spieler
        			}else if(button[0].getText() == "O" && button[1].getText() == "O")
        			{
        				/*	[_] [_] [2]
        				 * 	[3] [4] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[2].doClick();
        				button[2].setText("X");
        				button[2].setBackground(Color.red); //färbt Button
        				button[2].setEnabled(false); //sperrt Button
        				player = true; //Übergibt den Zug an den Spieler
        			}else if(button[6].getText()=="O" && button[7].getText()=="O")
        			{
        				/*	[0] [1] [2]
        				 * 	[3] [4] [5]
        				 * 	[_] [_] [8]	
        				 */
        				button[8].doClick();
        				button[8].setText("X");
        				button[8].setBackground(Color.red); //färbt Button
        				button[8].setEnabled(false); //sperrt Button
        				player = true; //Übergibt den Zug an den Spieler
        			}else if(button[7].getText()=="O" && button[8].getText()=="O")
        			{
        				/*	[0] [1] [2]
        				 * 	[3] [4] [5]
        				 * 	[6] [_] [_]	
        				 */
        				button[6].doClick();
        				button[6].setText("X");
        				button[6].setBackground(Color.red); //färbt Button
        				button[6].setEnabled(false); //sperrt Button
        				player = true; //Übergibt den Zug an den Spieler
				
        			}else if(button[1].getText() == "O" && button[4].getText() == "O")
        			{
        				/*	[0] [_] [2]
        				 * 	[3] [_] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[7].doClick();
        				button[7].setText("X");
        				button[7].setBackground(Color.red); //färbt Button
        				button[7].setEnabled(false); //sperrt Button
        				player = true; //übergibt den Zug an den Spieler
        			}else if(button[4].getText() == "O" && button[7].getText() == "O") 
        			{
        				/*	[0] [1] [2]
        				 * 	[3] [_] [5]
        				 * 	[6] [_] [8]	
        				 */
        				button[1].doClick();
        				button[1].setText("X");
        				button[1].setBackground(Color.red); //färbt Button
        				button[1].setEnabled(false); //sperrt Button
        				player = true; //Übergibt den Zug an den Spieler
        			}else if(button[2].getText() == "O" && button[5].getText() == "O") 
        			{
        				/*	[0] [1] [_]
        				 * 	[3] [4] [_]
        				 * 	[6] [7] [8]	
        				 */
        				button[8].doClick();
        				button[8].setText("X");
        				button[8].setBackground(Color.red); //färbt Button
        				button[8].setEnabled(false); //sperrt Button
        				player = true; //Übergibt den Zug an den Spieler
        			}else if(button[5].getText() == "O" && button[8].getText() == "O") 
        			{
        				/*	[0] [1] [2]
        				 * 	[3] [4] [_]
        				 * 	[6] [7] [_]	
        				 */
        				button[2].doClick();
        				button[2].setText("X");
        				button[2].setBackground(Color.red); //färbt Button
        				button[2].setEnabled(false); //sperrt Button
        				player = true; //Übergibt den Zug an den Spieler
        			}else if(button[0].getText() == "O" && button[4].getText() == "O") 
        			{
        				/*	[_] [1] [2]
        				 * 	[3] [_] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[8].doClick();
        				button[8].setText("X");
        				button[8].setBackground(Color.red); //färbt Button
        				button[8].setEnabled(false); //sperrt den Button
        				player=true; //wechselt wer gerade am Zug ist - Übergibt Zug an Spieler
        			}else if(button[4].getText() == "O" && button[8].getText() == "O") 
        			{
        				/*	[0] [1] [2]
        				 * 	[3] [_] [5]
        				 * 	[6] [7] [_]	
        				 */
        				button[0].doClick();
        				button[0].setText("X");
        				button[0].setBackground(Color.red); //färbt Button
        				button[0].setEnabled(false); //sperrt den Button
        				player=true; //wechselt wer gerade am Zug ist - Übergibt Zug an Spieler
        			}else if (button[4].getText() == "O" && button[6].getText()=="O")
        			{
        				/*	[0] [1] [2]
        				 * 	[3] [_] [5]
        				 * 	[_] [7] [8]	
        				 */
        				button[2].doClick();
        				button[2].setText("X");
        				button[2].setBackground(Color.red);
        				button[2].setEnabled(false);
        				player = true;
        			}else if (button[2].getText()=="O" && button[4].getText()=="O")
        			{
        				/*	[0] [1] [_]
        				 * 	[3] [_] [5]
        				 * 	[6] [7] [8]	
        				 */
        				button[6].doClick();
        				button[6].setText("X");
        				button[6].setBackground(Color.red);
        				button[6].setEnabled(false);
        				player = true;
        			}
        		}else if (Zug == 7)
        		{
        			
        		}
			}else if (player == true) //fängt die Spielereingaben ab und setzt die entsprechenden Buttons auf "O"
			{
				buchstabe = "O"; //wird umgeschaltet um die Siegbedingungsüberprüfung zu gewährleisten
				
        		genutzerBut.setText("O"); // setzt den Button auf einen Wert (Wert wird oben bestimmt)
        		genutzerBut.setBackground(Color.green); //färbt Button
        		genutzerBut.setSelected(true);
        		genutzerBut.setEnabled(false); //sorgt dafür das gewählte Buttons nicht geändert werden können
        		player = false; //wechselt wer gerade am Zug ist - Übergibt an Computer
			}
		}
		
        /*	In der kommenden Schleife wird die Siegbedingung geprüft.
         *  Wenn die Buttons in einer Reihe ein gleiches Symbol haben, 
         *  wird der Zähler i hochgeschaltet bis er der fixen Variable Seite entspricht
         *  dann wird die SiegBoolean umgeschaltet
         */
        	
        for(int i=0;i<SEITE;i++)
        {
            if(button[SEITE*i].getText() == buchstabe && button[SEITE*i+1].getText() == buchstabe && button[SEITE*i+2].getText() == buchstabe) 
            	//Überprüfung für Waagerecht
            	{
            	Sieg = true;
            	}else if(button[i].getText() == buchstabe && button[i+SEITE].getText() == buchstabe && button[i+SEITE+SEITE].getText() == buchstabe) 
            	//Überprüfung für Senkrecht
            	{
            	Sieg = true;
            	}
        }
        if(button[0].getText() == buchstabe && button[4].getText() == buchstabe && button[8].getText() == buchstabe) 
        	//Überprüfung für Diagonal von rechts unten nach links oben
        	{
        	Sieg = true;
        	}
        if(button[6].getText() == buchstabe && button[4].getText() == buchstabe && button[2].getText() == buchstabe)
        	//Überprüfung für Diagonal von links unten nach rechts oben
        	{
        	Sieg = true;
        	}
        
        //	Wenn die Sieg Boolean auf True geschaltet wurde, wird das Spielende mittels eines PopUpFensters verkündet
        
        if(Sieg == true)
        {
        	//PopUp Dialogfenster mit Auswahlmöglichkeiten
            
        	if (buchstabe == "X") //wenn X der zuletz' eingegebene Buchstabe
        	{
        	// Variable wird für PopUp erzeugt und fängt Eingabe ab
        		int endeingabe = JOptionPane.showConfirmDialog(null,"X hat gewonnen!" + "\nNoch eine Runde spielen?","Spielende", JOptionPane.OK_CANCEL_OPTION);
        		if (endeingabe != 0) 
        		{
        			System.exit(0); //Programm schließt sich
        		}else
        		{
        			optik.dispose(); //altes Fenster schließt sich
        			new TicTacToe(); //neues Fenster öffnet sich
        			
        		}
        	}else if (buchstabe == "O") //Wenn O der zuletzt eingegebene Buchstabe
        	{
            	// Variable wird für PopUp erzeugt und fängt Eingabe ab
        		int endeingabe = JOptionPane.showConfirmDialog(null,"O hat gewonnen!" + "\nNoch eine Runde spielen?","Spielende", JOptionPane.OK_CANCEL_OPTION);
        		if (endeingabe != 0) 
        		{
        			System.exit(0); //Programm schließt sich
        		}else
        		{
        			optik.dispose(); //altes Fenster schließt sich
        			new TicTacToe(); //neues Fenster öffnet sich
        		}
        	}
        } else if(Zug == SEITE*SEITE && Sieg == false) //wenn alle Felder voll, kein Sieger
        {
        	// PopUp-Dialogfenster mit Auswahlmöglichkeiten
        	
        	//Variable wird erzeugt und fängt Eingabe ab
            int endeingabe = JOptionPane.showConfirmDialog(null,"Unentschieden!" + "\nNoch eine Runde spielen?","Spielende", JOptionPane.OK_CANCEL_OPTION);
            if (endeingabe != 0) //was passiert bei der Eingabe
            {
            	System.exit(0); //Programm schließt sich
            }else
            {
            	optik.dispose(); //altes Fenster schließt sich
            	new TicTacToe(); //neues Fenster öffnet sich
            }
        }
        
    }

}
 

Deros

Bekanntes Mitglied
was sollen die ganzen Aufrufe von doClick()?
damit rufst du an der Stelle immer wieder erneut die actionPerformed() auf, nimmst die raus funktioniert es doch halbwegs, wobei die Logik wie der Computer sein Feld auswählt halt echt schlecht ist und in vielen Fällen halt zu keinem Ergebnis mehr führt. Sprich der Computer nicht weiterspielt.
 

Ceryin

Neues Mitglied
Das ".doClick()" sollte das Klicken des Buttons auslösen - was aber nicht funktioniert hat.

Mir fehlt noch immer der Baustein der dafür sorgt, dass die KI den Klick ausführt und sich der Zustand des ToggleButtons sichtbar ändert.
Ich weiß das die KI unvollständig ist - aber sie agiert ja nicht einmal mit den wenigen Schritten die sie haben sollte *sfz*
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JButton und ActionListener Allgemeine Java-Themen 3
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
V Event Handling ActionListener nur bei "checked" CheckBoxMenuItem Allgemeine Java-Themen 2
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
S Methode funktioniert nicht als ActionListener Allgemeine Java-Themen 4
A ActionListener blockiert Bedienung des ganzen Systems Allgemeine Java-Themen 8
Z Swing Problem mit ActionListener Allgemeine Java-Themen 6
X getText undefiniert in ActionListener Allgemeine Java-Themen 5
D ActionListener wird mit jedem Mal öfter aufgerufen Allgemeine Java-Themen 2
P Variablen Variable von void im ActionListener verwenden Allgemeine Java-Themen 3
F Swing NetBeans nimmt ActionListener nicht an. Allgemeine Java-Themen 2
C Event Handling ActionListener manuell auslösen Allgemeine Java-Themen 8
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
P ActionListener / Label Name auslesen Allgemeine Java-Themen 2
C ActionListener zwei Buttons zuweisen Allgemeine Java-Themen 11
T ActionListener und Singleton Allgemeine Java-Themen 15
J ActionListener-Klasse will Methode nicht annehmen Allgemeine Java-Themen 6
G Übergabeparameter an ActionListener Allgemeine Java-Themen 9
Z Mit ActionListener in anderem Frame lauschen? Allgemeine Java-Themen 3
W 2 Klassen + ActionListener Allgemeine Java-Themen 2
G Anonymen Buttons in for schleife ActionListener hinzufügen Allgemeine Java-Themen 5
C JTree: ActionListener auf die Nodes Allgemeine Java-Themen 3
C ActionListener reagiert zu oft Allgemeine Java-Themen 5
MQue ActionListener und GUI trennen Allgemeine Java-Themen 3
L ActionListener / Buttons Allgemeine Java-Themen 8
E ActionListener Allgemeine Java-Themen 8
TheJavaKid Programmablauf anhalten bis actionlistener ausgeführt wurde Allgemeine Java-Themen 6
minzel ActionListener aus Package Allgemeine Java-Themen 24
F AbstractAction und ActionListener Allgemeine Java-Themen 2
J variablen wert ändernung mit einer art actionlistener? Allgemeine Java-Themen 4
K ActionListener ohne implements? Allgemeine Java-Themen 2
L ActionListener > Variable ... u.v.m. Allgemeine Java-Themen 19
W ActionListener + Klasse einbinden Allgemeine Java-Themen 2
G wenn Button geklickt -> regelmäßig Aktion ausführen Allgemeine Java-Themen 7
T Auf ein Image geklickt Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben