AWT Applet - Button aus anderer Klasse abfragen

Maddin222

Mitglied
Hallo JAVA-Gemeinde,

ich habe ein Problem mit der Abfrage der Buttons im AWT Applet. Wenn ich alles in eine Klasse (zB. TestMain.class) schreibe, funktionieren die Buttons einwandfrei. Um den Code etwas übersichtlicher zu gestalten, möchte ich den Code in Klassen aufteilen. Doch nun kann kann das Event nicht mehr mit dem Button verglichen werden (siehe Kommentar bei System.out). Ist die Vorgehensweise eigentlich richtig? Oder hat jemand eine Idee dazu? Bin über jeden Tipp dankbar ;-)

Hier ein Beispiel:

TestMain.class
Java:
package Testbeispiel;

import java.applet.Applet;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Event;
import java.awt.Panel;


public class TestMain extends Applet {

	Container CntHauptmenu;
	CardLayout cl;
	static Panel cardPanel;

	public void init() {
		
		CntHauptmenu = this;
		CntHauptmenu.setLayout(null);
		
		cardPanel = new Panel();
		cardPanel.setBounds(10, 20, 300, 300);

		cl = new CardLayout();
		cardPanel.setLayout(cl);
		CntHauptmenu.add(cardPanel);

		ViewHauptmenu.InitMenu();

		System.out.println(ViewHauptmenu.BtnEins); // AUSGABE: null
	}

	public boolean action(Event event, Object eventobject) {
			
		System.out.println(event.target);	// AUSGABE: java.awt.Button[button0,50,75,120x30,label=1]
		 
		System.out.println(ViewHauptmenu.BtnEins); // AUSGABE: null
		 
		if (event.target == ViewHauptmenu.BtnEins) {							
			System.out.println("Button 1 gedrückt");
		}
		
		if (event.target == ViewHauptmenu.BtnZwei) {							
			System.out.println("Button 2 gedrückt");
		}
		
		return false;
	}
}


ViewHauptmenu.class
Java:
package Testbeispiel;

import java.awt.Button;
import java.awt.Label;
import java.awt.Panel;


public class ViewHauptmenu {

	Label LblUberschrift;
	static Button BtnEins;
	static Button BtnZwei;
	Panel PnlHauptmenu;
	
	public static void InitMenu() {
		
		Panel PnlHauptmenu = new Panel();
		PnlHauptmenu.setLayout(null);
		PnlHauptmenu.setBounds(10, 15, 300, 300);
		TestMain.cardPanel.add(PnlHauptmenu, "Hauptmenu");
		
		Label LblUberschrift = new Label("Bitte wählen...");
		LblUberschrift.setBounds(10, 25, 220, 20);
		PnlHauptmenu.add(LblUberschrift);
		
		Button BtnEins = new Button("1");
		BtnEins.setBounds(50, 75, 120, 30);
		BtnEins.setFocusable(false);
		PnlHauptmenu.add(BtnEins);
		
		Button BtnZwei = new Button("2");
		BtnZwei.setBounds(50, 115, 120, 30);
		BtnZwei.setFocusable(false);
		PnlHauptmenu.add(BtnZwei);

		System.out.println(BtnEins); // AUSGABE: java.awt.Button[button0,50,75,120x30,label=1]
	}

}
 
Zuletzt bearbeitet:

Maddin222

Mitglied
OK, hat sich erledigt :oops:

Habe die action(event)-Abfrage gelöscht und in der View-Klasse unter Zeile 28 den ActionListener mit einer anonymen Klasse hinzugefügt.

Java:
		BtnEins.addActionListener(new ActionListener() {
			// Anonyme Klasse
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				System.out.println("Button gedrückt");
			}
		});
 

L-ectron-X

Gesperrter Benutzer
Sieht so aus, als wenn du das veraltete Event-Model aus Java 1.0 benutzt.
Seit Java 1.1 gibt es das Delegation-Model.

In dem Fall gibts dann für Buttons das [JAPI]ActionListener[/JAPI]-Interface, von welchem du die einzige enthaltene Methode überschreibst. An deinen Button hängst du dann nur noch eine Referenz auf ein Listener-Objekt.
Am besten, du schaust dir mal die Beispiele von "Java ist auch eine Insel" an.

[EDIT]Deine Lösung ist absolut richtig.[/EDIT]
 

Maddin222

Mitglied
Vielen Dank für die Info L-ectron-X ;)

Vielleicht kann mir nochmal jemand helfen? Bin am verzweifeln :shock:

Für den ActionListener habe ich eine neue Klasse "MeinActionListener" angelegt. Hier treten leider zwei Probleme auf:

Wenn ich in der ViewHauptmenu.class beim Button
Java:
BtnEins.addActionListener(new MeinActionListener(this));
einfüge, wird "this" immer rot markiert, da es in statischen Methoden nicht aufgerufen werden kann. Und ohne Static kann ich ViewHauptmenu.InitMenu() nicht ausführen.

Meine zweite Frage wäre, ob dann die MeinActionListener so richtig ausgewertet werden würde:
Java:
package Testbeispiel;

import java.awt.event.ActionEvent;


public class MeinActionListener {

	private TestMain Applet;
	
	private MeinActionListener (TestMain Applet) {
		this.Applet = Applet;
	}
	
	public void actionPerformed(ActionEvent arg0) {
		System.out.println("Button gedrückt");
	}
}

Ich habe versucht mich weitgehend an diesem Video zu orientieren: Java_Tutorial_P11_ActionListener2_2.mp4 - YouTube (ab 4:03)
Im Video funktioniert das mit Frames. Vielleicht kann mir jemand einen Tipp geben, wie das in meinem Applet klappen könnte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Button erstellen im Applet Java Basics - Anfänger-Themen 3
Z applet mit Ende-Button beenden beim Klicken Java Basics - Anfänger-Themen 5
T In einem Applet ein Button mit einer URL verlinken! Java Basics - Anfänger-Themen 10
Dilandau button direkt in applet hängen (ohne panel) Java Basics - Anfänger-Themen 2
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
D Java Applet wird nicht im Browser angezeigt Java Basics - Anfänger-Themen 6
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
A Applet Plot für atan erstellen Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
K JDK installieren displays java applet für MAC Java Basics - Anfänger-Themen 10
S Zeichen von abgerundeten Rechtecken auf einem Applet Java Basics - Anfänger-Themen 5
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
S Klassen Applet extern aufrufen Java Basics - Anfänger-Themen 1
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
C Applet Probleme Java Basics - Anfänger-Themen 1
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
J JavaScript findet Applet Methode nicht Java Basics - Anfänger-Themen 2
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
K Applet funz. im Browser nicht Java Basics - Anfänger-Themen 11
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
thet1983 Erste Schritte <param> Tag in Applet Java Basics - Anfänger-Themen 4
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
G Signiertes Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 1
Y Applet: Verschlüsselung Java Basics - Anfänger-Themen 3
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
K Frage zu Applet Java Basics - Anfänger-Themen 3
V While Schleife für ganzes Applet Java Basics - Anfänger-Themen 6
P Applet Histogramm Java Basics - Anfänger-Themen 6
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
S Applet findet Klasse nicht Java Basics - Anfänger-Themen 7
R Java Applet mit Mausklick ansprechen Java Basics - Anfänger-Themen 3
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
S Applet-Objekt ist vor dem Hintergrund Java Basics - Anfänger-Themen 11
F Problem mit Applet Java Basics - Anfänger-Themen 5
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
S Applet Deployment Java Basics - Anfänger-Themen 2
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
H Applet - main()-Methode Java Basics - Anfänger-Themen 4
K Applet wird nicht im Browser und Appletviewer angezeigt Java Basics - Anfänger-Themen 5
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
H Klassen in Eclipse stellt es im Ausgabe-Applet nicht dar Java Basics - Anfänger-Themen 5
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
Dogge Start:Applet nicht Initialisiert Java Basics - Anfänger-Themen 11
D Applet beenden Java Basics - Anfänger-Themen 7
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
M RSA Applet ohne Cipher Java Basics - Anfänger-Themen 15
B String verschlüsseln - Applet - ohne BASE64 Java Basics - Anfänger-Themen 7
S Methode in Applet starten Java Basics - Anfänger-Themen 2
W Probleme mit Java Applet Java Basics - Anfänger-Themen 5
M Applet kann in Browser nicht ausgeführt werden Java Basics - Anfänger-Themen 4
L Applet: Laden unterbricht den Browserfokus (scrollen) Java Basics - Anfänger-Themen 2
Z Applet startet nicht bei Domain mit Umlaut Java Basics - Anfänger-Themen 2
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
Helgon ClassNotFound Applet Java Basics - Anfänger-Themen 6
U Applet Signiert und trotzdem Fehlermeldung Java Basics - Anfänger-Themen 18
E Schach in Java-Applet <No main classes found> Java Basics - Anfänger-Themen 5
S Applet Java Basics - Anfänger-Themen 2
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
E Applet wird nicht angezeigt Java Basics - Anfänger-Themen 11
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
B Applet - Laden eines Java-Fensters bricht ab Java Basics - Anfänger-Themen 6
N Import Problem, Applet will nicht Java Basics - Anfänger-Themen 6
M Applet Eclipse Vollbild Java Basics - Anfänger-Themen 3
K Befehl per Shell an Java-Applet JAR übergeben Java Basics - Anfänger-Themen 16
I Java Applet Java Basics - Anfänger-Themen 8
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
KBJ Java Applet Gästebuch Java Basics - Anfänger-Themen 12
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
U Applet wird nicht angezeigt Java Basics - Anfänger-Themen 2
J J-Applet, Frage Java Basics - Anfänger-Themen 19
J Applet farblich gestalten Java Basics - Anfänger-Themen 5
M Applet lokaler Festplattenzugriff Java Basics - Anfänger-Themen 25
X Applet - Client/Server Java Basics - Anfänger-Themen 2
M Applet ist nur graues Feld Java Basics - Anfänger-Themen 12
O webserver für Applet und php Java Basics - Anfänger-Themen 7
J Fehlermeldung: Applet nicht initialisiert Java Basics - Anfänger-Themen 24
C Java Applet Probleme Java Basics - Anfänger-Themen 4
S Probleme mit Java 3D Tutorial (Applet) Java Basics - Anfänger-Themen 7
S Input/Output Problem mit dateizugriff innerhalb der .jar (Applet) Java Basics - Anfänger-Themen 2
M Applet + BilderDownload Java Basics - Anfänger-Themen 36
O Applet Wetterticker Java Basics - Anfänger-Themen 17
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Bild in Applet darstellen Java Basics - Anfänger-Themen 6
W Applet funktiniert nur in Eclipse Java Basics - Anfänger-Themen 2
S Erste Schritte Machbarkeit: Applet oder GUI-Applikation? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben