# funktionalitätsproblem mit Applet



## Sythus (29. Feb 2008)

Hallo Leute,

ich bastel zur Zeit an einem Texteditor und habe nun dessen Applikation versucht in ein Applet umzuwandeln.

Hat soweit auch funktioniert:
http://syrotech.sy.funpic.de/app2/


Doch ich habe 2 Probleme wo ich nicht so richtig weiterkomme, bzw 2 Fragen.

Wenn ihr das Appelt aufruft und das Menü benutzt ist es hinter der Formatierungsleiste (Bold, Italic, Fontsize etc)...
Hab schon mehrfach versucht alles umzubauen, aber das bleibt einfach so...
Jemand eine Idee??

Mein 2tes anliegen betrifft die Funktionalität des Menüs...
Bei der Applikation funktionieren sie einwandfrei, nur bei dem Applet werden die Menüpunkte einfach ignoriert.
Ich dachte zuerst das liegt daran das das mehrere Klassen sind und das vielleicht jede Klasse von Applet erben müsste. Aber das kann ja auch nicht sein, da die Formatierung des Textes ja funktioniert.

Muss das Applet damit ein Menü funktioniert signiert sein?
Oder woran könnte es sonst liegen?

Es ist mittlerweile doch sehr viel Quelltext und ich weiß nicht in wiefern es hilft wenn ich den hier poste. Mach ich aber natürlich gern wenn jemand mal reinschauen möchte.

Danke schonmal für eure Hilfe


Mit freundlichen Grüßen Sythus


----------



## L-ectron-X (29. Feb 2008)

Sythus hat gesagt.:
			
		

> Wenn ihr das Appelt aufruft und das Menü benutzt ist es hinter der Formatierungsleiste (Bold, Italic, Fontsize etc)...


Hast du AWT- mit Swing-GUI-Komponenten gemischt?



			
				Sythus hat gesagt.:
			
		

> Muss das Applet damit ein Menü funktioniert signiert sein?
> Oder woran könnte es sonst liegen?


Speichern kannst du mit einem unsignierten Applet vergessen. Und "Beenden" darf ein Applet die VM nicht. Du kannst höchstens eine andere Webseite laden.
Komisch ist nur, dass in der Java-Konsole keine Exception aufgelistet wird, wenn ich eine der kritischen Operationen aufrufe.


----------



## Guest (29. Feb 2008)

Nein, habe nur noch Swingkomponenten in dem Applet verbaut.

Warum bei dem Menü nichts reagiert und auch keine Exception auftritt ist mir ein Rätsel.
Letztendlich rufen solche sachen wie Speichern, Laden und String suchen nur entweder ein Objekt der Klasse Meldedialog oder Fragedialog auf, welche ebenfalls vom Typ Swing sind.

Müssen diese Klasse auch eine init() und start() etc enthalten? Denke nicht oder?
Ich bin gerade sehr Ratlos.


----------



## Sythus (29. Feb 2008)

Kommando zurück,

habe tatsächlich noch ein Panel drin gehabt, daran lags - dachte hätte alles zu Swing Objeten gemacht.

Gut danke dir =)


Nun bliebe nur noch das Problem mit den Menüfunktionen! 

lg Sythus


----------



## L-ectron-X (29. Feb 2008)

Anonymous hat gesagt.:
			
		

> Müssen diese Klasse auch eine init() und start() etc enthalten? Denke nicht oder?


In einem Applet muss mindestens die init()-Methode überschrieben werden.




			
				Sythus hat gesagt.:
			
		

> Nun bliebe nur noch das Problem mit den Menüfunktionen!


Dazu musst du mal relevanten Code zeigen.


----------



## Sythus (29. Feb 2008)

Okay, ich weiß nun wann der Fehler auftritt das die Menüs einfach nicht mehr reagieren.

Nachdem ich die AWT Menüs in Swingmenüs umgeändert habe...

d.h. überall nen J davorgesetzt habe ^^




```
OE_Start(String title){
		super(title);
		// Eine Menüleiste mit Menüs anlegen
		JMenuBar menüleiste = new JMenuBar();
		setJMenuBar(menüleiste);

		JMenu menu1 = new JMenu("Datei");
		JMenuItem item1_1 = new JMenuItem("Datei laden");
		JMenuItem item1_2 = new JMenuItem("Datei speichern");
		JMenuItem item1_3 = new JMenuItem("Programm beenden");
		menu1.add(item1_1);
		menu1.add(item1_2);
		menu1.add(item1_3);
		menüleiste.add(menu1);

		JMenu menu2 = new JMenu("Spezial");
		JMenuItem item2_1 = new JMenuItem("Drucken");
		JMenuItem item2_2 = new JMenuItem("String suchen");
		menu2.add(item2_1);
		menu2.add(item2_2);
		menüleiste.add(menu2);
		
		OE_ActionListener actionlistener = new OE_ActionListener();
		menu1.addActionListener(actionlistener);
		menu2.addActionListener(actionlistener);
}
```


fragt sich nun warum das so ist, ich verstehs nicht


----------



## L-ectron-X (29. Feb 2008)

Wie siehts denn in OE_ActionListener aus?


----------



## Sythus (29. Feb 2008)

```
public class OE_ActionListener implements ActionListener{

		public void actionPerformed(ActionEvent e){
			String Label;
			Label = e.getActionCommand();
				
			if (Label.equals("Datei laden"))
				Datei_laden();
	
			if (Label.equals("Datei speichern"))
				Datei_speichern();

			if (Label.equals("Programm beenden"))
				System.exit(0);

			if (Label.equals("Drucken")) 
				Text_drucken();

			if (Label.equals("String suchen"))
				String_suchen();

		}
	}
```

Da kann eigtl. nix falsch sein oder?
Kann gern mal den ganzen Code zur verfügung stellen.

http://syrotech.sy.funpic.de/appletBuilding.rar
Das sind alle vier Klassen des Applets


----------



## Sythus (29. Feb 2008)

Habe nun herausgefunden das er OE_ActionListener garnicht mehr benutzt, d.h. er geht garnicht rein sobald die Menüs
Swing Objekte sind *schulterzuck*

Wenn er den ActionListener nicht benutzt kann es ja auch nicht funktionieren aber wo der Fehler ist weiß ich leider auch nicht :/


----------



## Sythus (1. Mrz 2008)

Kann es denn sein das ein ActionListener bei Swing Komponenten garnicht funktioniert?


----------



## L-ectron-X (1. Mrz 2008)

Das ist Unsinn, natürlich ist der ActionListener auch für Swing-Komponenten vorgesehen.  
Ich habe mir gestern mal deinen Code herunter geladen. Aber als sich die Fehler häuften und ich keine Zeit mehr hatte, hab ich's erst mal sein gelassen.


----------



## Sythus (1. Mrz 2008)

Ahh, jedenfalls danke für deine Mühen=)

Fehler? Meinst du bei dem Versuch das Menü zum laufen zu bringen oder war mein Code direkt schon Fehlerhaft?

Bei mir werden keine Fehler angezeigt..


----------



## L-ectron-X (1. Mrz 2008)

Du hast Sachen drin, die haben bei einem Applet absolut keine Funktion/Wirkung. Du hältst dich auch nicht an die Sun Code Conventions.


----------



## Sythus (1. Mrz 2008)

Hehe gut zu wissen, 

war mein erster Versuch eine Applikation in ein Applet umzuwandeln, und war froh das ich es überhaupt zum laufen gekriegt habe. Werde natürlich Versuchen mit der Zeit den unnützen Code auszusortieren.



> Du hältst dich auch nicht an die Sun Code Conventions.



Versuche ich auch besser zu machen... Ist mein erstes Projekt in der größe


Dachte gerade daran das dass Menü vielleicht nicht funktioniert da vielleicht Code, der bei dem Applet keine Funktionen hat dieses blockiert.

Aber das Menü von der Applikation funktioniert ja auch nicht wenn ich statt awt menü, swing menü einbaue..

Ich komm nicht weiter, das problem macht mich wahnsinnig   :cry:


----------



## L-ectron-X (1. Mrz 2008)

Ich schreib dir mal etwas Beispielcode, dann wird dir vielleicht einiges klarer.


----------



## Sythus (1. Mrz 2008)

Danke das du soviel Zeit für mich investierst =)


----------



## Sythus (1. Mrz 2008)

Habe jetzt mal einfach nur ein Applet gebaut welches aus einem JPanel und eine Jmenubar mit Jmenu besteht.

Dazu ein ActionListener

Kurzer und feiner Code -> funktioniert nicht - also muss hier irgendwo der hund begraben liegen!


```
package testpackage;

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

import javax.swing.*;

public class JappletMenu extends JApplet {

	private static final long serialVersionUID = 1L;

	public void init() {
		JPanel textPanel = new JPanel();
		
		JMenuBar menüleiste = new JMenuBar();
		setJMenuBar(menüleiste);
		
		JMenu menu1 = new JMenu("Datei");
		JMenuItem item1_1 = new JMenuItem("Datei laden");
		JMenuItem item1_2 = new JMenuItem("Datei speichern");
		JMenuItem item1_3 = new JMenuItem("Programm beenden");
		menu1.add(item1_1);
		menu1.add(item1_2);
		menu1.add(item1_3);
		menüleiste.add(menu1);
		
		add(textPanel);
		
		OE_ActionListener neuerListener = new OE_ActionListener();
		menu1.addActionListener(neuerListener);
	}
	
	public void start(){
		setVisible(true);
	}
	public void stop(){
		setVisible(false);
	}
	public void Datei_laden(){
		System.out.print("nerd");
	}
	
	public class OE_ActionListener implements ActionListener{

		public void actionPerformed(ActionEvent e){
			String Label;
			Label = e.getActionCommand();
			System.out.print("na!!");
			if (Label.equals("Datei laden"))
				Datei_laden();
			/*
			if (Label.equals("Datei speichern"))
				Datei_speichern();
			
			if (Label.equals("Programm beenden"))
				System.exit(0);

			if (Label.equals("Drucken")) 
				Text_drucken();

			if (Label.equals("String suchen"))
				String_suchen();
			*/
		}
	}
	
	

}
```


----------



## Sythus (2. Mrz 2008)

Nach vielen Versuchen unter anderem auch mit dem MenuListener von Swing, habe ich den ActionListener nun mal auf die JMenuItems benutzt.

Das funktioniert - das der ActionListener nicht auf einzelne JMenu´s funktioniert ist wohl ein bug.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4108937


----------

