# AWT- ItemListener adden



## Kurt (27. Apr 2005)

Hi! Ich hab ein Programm, dass in Java 1.1 laufen muss. Ich schaffe es zwar, dass die Komponenten angezeigt werden, es tut sich allerdings nichts, wenn ich eine Checkbox oder einen Button anklicke. Ich habs auch schon direkt mit showStatus probiert ob der ActionListener aufgerufen wird, dies ist aber nicht so.
Eine Vermutung von mir: falsches adden des action-/ Itemlistener!
Kann mir jemand sagen wie das in 1.1 bzw. awt funktioniert?
derzeit: Checkbox.addItemListener(this);
Button.addActionListener(this);

Vielen Dank!

mfg


----------



## L-ectron-X (28. Apr 2005)

Zeigst Du mal den Code dazu?


----------



## Gast (3. Mai 2005)

Ich habe dasselbe Problem.

Im JBuilder luft das Applet noch einwandfrei, bzw reagieren sowohl die Checkboxen, als auch der Button auf Klicks.
Alles läuft so, wie es soll...
Im Browser wird das Applet zwar angezeigt, ist aber ansonsten Mausetod.

Gibt es beim Eventhandling grundlegende Unterschiede, als bei normalen Swing oder AWT Gui-Applikationen ?


----------



## Gast (5. Mai 2005)

>Push!<

Vielleicht noch ein paar Infos zu meiner Implementierung :
Das Applet beinhaltet eigentlich nur ein Panel auf dem mehrere RadioButtons und ein Button eingebettet sind.
Die Actionevents werden, wie in Swing/AWT üblich mit einem ActionListener gehandelt und über eine Actionperformed_methode mit Aktionen verknüpft. Im JBuilder (sowohl in der html-Darstellunf als auch in der Applet-Simulation läuft es einwandfrei. Im Browser reagiert das Applet nicht mehr auf Klicks.

Wäre wirklich nett, wenn jemandem etwas dazu einfällt. Es woll eine Umfrage für eine Homepage eines Bekannten werden. Und ich habe versproch, das Ganze in diesem Monat noch Bugfrei abzuliefern 

Danke !


----------



## L-ectron-X (5. Mai 2005)

Grundsätzlich sieht die Event-Behandlung in AWT und Swing gleich aus, ganz egal, ob es sich um ein Applet oder eine Applikation handelt.

Ich konnte noch nie gut raten. Also nochmal: Wie siehts denn nun mit dem Code aus?
Um einen Fehler zu finden muss ich schon was von dem Code sehen.


----------



## Gast (17. Mai 2005)

Klasse des Applets :
=============



> package umfrageapplet;
> 
> import java.awt.*;
> import javax.swing.*;
> ...



Klasse UmfragePanel
==============



> package umfrageapplet;
> 
> import java.awt.*;
> import com.borland.jbcl.layout.*;
> ...



[/quote]


----------



## Guest (22. Mai 2005)

hmm...Jetzt hab ich den Sourcecode gepostet und es gab trotzdem keine Antwort.


----------



## L-ectron-X (23. Mai 2005)

Sorry, habe deinen Post übersehen, nicht böse sein. Ich kümmere mich um dein Problem. :wink: 

Also, der gepostete Code ist soweit ich das sehe fehlerfrei.
Allerdings hat eine main()-Methode nichts in einem Applet verloren. Möglicherweise liegt da der Hase im Pfeffer.
Wie startest du denn das Applet? Kann ich auch mal den Code der HTML-Seite sehen?


----------



## Gast (23. Mai 2005)

ne, bin nicht böse ! Ich wollte nur nochmal auf das Problem hinweisen, weil ich mir fast gedacht habe, dass es übersehen wurde 

Also das Applet binde ich folgendermaßen in das html-file ein :



> <body>
> <applet code=umfrageapplet\UmfrageApplet.class archive="UmfrageApplet.jar" height="800"
> width="500">
> Hier steht das Umfrageapplet
> ...





> Allerdings hat eine main()-Methode nichts in einem Applet verloren. Möglicherweise liegt da der Hase im Pfeffer.



Oh...?! 
Da setz ich mal an. Schon'mal vielen Dank für diesen Hinweis !

Allerdings startet das Applet ja. Nur die Swing-Komponenten stellen sich eben taub.


----------



## Spacerat (23. Mai 2005)

Irgendwie kein Wunder...

Zunächst muß das Applet oder die UmfrageKlasse das ActionListener-Interface implementieren (schon geschehen). Dann muß dem Button der Listener huzugefügt werden (Button.addActionlistener(this) ; auch schon geschehen), nun der Knackpunkt: Es reicht nicht, einen Button zu instanzieren, er muß dem Panel noch hinzugefügt werden (UmfragePanel.add(FertigButton)). Da es sich beim UmfagePanel aber um einen JPanel handelt, muß es "UmfragePanel.getContentPane().add(FertigButton)" heissen.

cu Spacerat


----------



## Wildcard (23. Mai 2005)

Spacerat hat gesagt.:
			
		

> Da es sich beim UmfagePanel aber um einen JPanel handelt, muß es "UmfragePanel.getContentPane().add(FertigButton)" heissen.



So eine Methode gibts bei JPanels nicht. Die contentPane brauchte man nur bei JFrames, und das hat sich dank dem Tiger auch erledigt.


----------



## Gast (23. Mai 2005)

Der JButton wird in der JPanel-Klasse mit this.add(...) eingebunden.
Die Stelle im Quellcode habe ich nur nicht zitiert.

Nochmal : 

Alle Komponenten erscheinen, da wo sie es sollen.
Im JBuilder funktioniert auch alles einandfrei, wenn ich das Projekt kompiliere und laufen lasse. 

Das Problem tritt lediglich im Browser auf. 
Auch dort sieht augenscheinlich alles so aus wie es soll ( "alles da" ). Nur reagieren die Swing-Komponenten (*nur* im Browser !)  nicht auf Mausklicks.


----------



## Wildcard (23. Mai 2005)

Wolltest du nicht eigentlich ein Java 1.1 kompatibles Applet? Da gab's aber noch gar kein Swing   :wink:


----------



## Gast (23. Mai 2005)

Das war ein anderer User ("Kurt"). Bei mir lauft 1.4.2

Ich wollte keinen neuen Thread eröffnen. Meine Posts sind alle von "Gast".


----------



## Wildcard (23. Mai 2005)

SRY, hatte mir das nicht alles durchgelesen...


----------



## Gast (23. Mai 2005)

Macht nix. Trotzdem vielen Dank für's "Mitknobeln"


----------



## Gast (23. Mai 2005)

Ok, ich habe das Problem gefunden.
Es hat rein garnichts mit den Swing-Komponenten zu tun und auch die main()-Methode stellt kein kein Problem dar.

Der Haken ist, dass ich im Rahmen der zu implementierenden Umfrage auf ein Textfile (elches auf dem Server liegen soll) zugreifen möchte, was dann eine "AccessControlException" schmeisst. 

Ich weiss wohl, dass die Sandbox einen nicht auf Dateien des Clients zugegriffen lässt. Aber das Problem müsste sich eigenlich lösen, wenn ich das Applet nicht mehr lokal starte ?!
Habe derzeit keinen Webspace, sonst hätte ich es schon gestestet. Hole das aber nach. 

Das Problem ist auf jeden Fall im Kontext dieses Threads gelöst.

Vielen Dank


----------



## Spacerat (24. Mai 2005)

Da fällt mir gerade ein "throws Exception" ins Auge, welche du mit e.printStackTrace() behandelst. Ich bin mir nicht sicher, wo der Stack hin gepinselt wird. Jedenfalls ist hier erstmal ein Vorschlag. Ändere mal die besagte (bzw. alle gleichartigen) Behandlung wie folgt:

```
e.printStackTrace(System.err);
```
und schau dir mal die Ausgabe in der Konsole an (IE: Extras->Sun Java Console).

cu Spacerat

Edit: Da hammas wider... So wärs also gegangen (oder auch anders)... Aber ich hab' nicht gesehen, das der Thread inzwischen schon zwei Seiten hat. OK forget it.


----------



## Roar (24. Mai 2005)

der stacktrace wird standartmäßig auf den errorstream geschrieben


----------



## Spacerat (24. Mai 2005)

@Roar: Na dann hatte die Antwort ja doch noch 'nen Sinn. Vielen Dank fü die Info.


----------

