Private Klasse in Applet nutzen?

  • Themenstarter Themenstarter RedMike
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

RedMike

Gast
Hallo,

ich schreibe ein Java basiertes Menu. Das Teil soll als Applet in eine HTML Seite eigebunden werden.
Kurz zu meinem Problem. Ich möchte innerhalb des Applets verschiedene Klassen programmieren, die ich
für meine Zwecke instanzieren möchte. In total abgespeckter Form sieht das so aus:

Code:
public class StandardMenu extends java.applet.Applet implements Runnable{

private MenuPunkt    PoMenuPunkt;

private class      MenuPunkt{
                        
                        private int             PnAnzahlSubMenus = -1;
                        private String          PsBeschriftung = "Beschriftung";
                        private String []       PsBeschriftungSub  = new String [20];
                        private String          PsUrlString = "Url";
                                                                  
                        
                        public void     setBeschriftung(String TsBeschriftung) {
                                        PsBeschriftung = TsBeschriftung;
                        }
                        public String   getBeschriftung() {
                            return PsBeschriftung;
                        }
                        public void     addSubMenu(String TsBeschriftung) {
                            PnAnzahlSubMenus = PnAnzahlSubMenus + 1;
                            PsBeschriftungSub[PnAnzahlSubMenus] = TsBeschriftung;
                       }
                        public int      countSubMenus(){
                            return PnAnzahlSubMenus + 1;
                        }
                        public String   getBeschriftungSubMenu(int TnSubMenuIndex){
                                        return  PsBeschriftungSub[TnSubMenuIndex];
                    }
                        public void     setUrl(String TsUrlAsString){
                                        PsUrlString = TsUrlAsString;
                        }
                        public String    getUrl(){
                                        return  PsUrlString;
                       }
}

}

-------------------------------------------------------------

Meine Annahme: Das Objekt PoMenuPunkt steht überall innerhalb des Applets zur Verfügung.

Mein Problem: Wieso geht der folgende Code, zB in "void paint()" nicht:

======> String LsStringTest;
======> LsStringTest = PoMenuPunkt.getUrl();

LsStringTest müsste doch nun "Url" enthalten. Tut es aber nicht. Was mach da falsch?

Danke für eure Antworten.

Mike
 
Variablen immer klein schreiben,
zur richtigen Code-Formatierung: übernimm einfach das was in 99% aller Beispiel zu lesen ist, deins ist unlesbar..,
kannst du privat gerne so machen, in öffentlichen Foren ein Unding
(du sprichst ja auch deutsch oder?)

---------

inwiefern funktioniert es denn nun nicht?
mach mal
Code:
System.out.println("a: "+poMenuPunkt.getUrl());
String lsStringTest;
lsStringTest = poMenuPunkt.getUrl(); 
System.out.println("b: "+lsStringTest);
was kommt dabei raus? wirklich was unterschiedliches?
 
Hallo,

erstmal danke für Deine Antwort.

Beide Vorschläge funktinieren leider nicht.

Sobald ich den String normal belege geht es:

Code:
String lsTestString;
lsTestString = "Funktioniert!"
System.out.println(lsTestString);


Woran kann das liegen? Ich denke, es ist ein ganz einfacher Fehler, aber ich komm nicht drauf. Bin leider totaler Java-Anfänger. :bahnhof:
 
> Beide Vorschläge funktinieren leider nicht.

welche beide? ich habe doch nur einen gemacht?
was heißt 'funktioniert nicht'?

cih dachte es geht darum, herauszufinden, was lsStringTest enthält,
dazu musst du eine solche Ausgabe machen,
also sage dann was da in die Konsole geschrieben wird,
oder welche Fehlermeldung kommt, falls der Code nicht ausgeführt wird

'funktioniert nicht' ist aber eine unverständliche Antwort,
was soll man darauf antworten,

was ist überhaupt das Problem?
> LsStringTest müsste doch nun "Url" enthalten. Tut es aber nicht.
sagest du am Anfang,
was ist denn drin wenn nicht 'Url'?


> Sobald ich den String normal belege geht es

was geht denn nun?, was ging vorher nicht?, ich versteh gar nix 😉
 
Hallo,

Dein Vorschlag funktioniert leider nicht:

Code:
System.out.println("a: "+poMenuPunkt.getUrl());
String lsStringTest;
lsStringTest = poMenuPunkt.getUrl();
System.out.println("b: "+lsStringTest);

In der Konsole wird nicht "Url" ausgegeben, sondern eine Reihe von Fehlermeldungen, die sofort verschwinden, sobald ich die getUrl() auskommentiere. (Vielleicht kannst Du damit was anfangen?):

Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at StandardMenu.paint(StandardMenu.java:143)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
at sun.awt.RepaintArea.paint(RepaintArea.java:224)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:254)
at java.awt.Component.dispatchEventImpl(Component.java:4031)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
 
das sieht recht eindeutig aus:
poMenuPunkt ist wahrscheinlich null, also gar kein Object, nicht da, leer usw.
wo nix ist kann man auch nicht getUrl() anfragen,

sehr einfach zu testen ist das mit
if (poMenuPunkt == null) {
...
}

sinnvoll sind auch Ausgaben der Form
System.out.println("poMenuPunkt: "+poMenuPunkt);
die auch mit null-Objekten funktionieren

------------

hättest du von Anfang an gesagt,
'beim Aufruf von xy erhalte ich folgende Exception
...'

dann hätte man dir das viel leichter erklären können,

da du aber
> LsStringTest müsste doch nun "Url" enthalten. Tut es aber nicht.
gesagt hast,
habe ich wie jeder andere ganz normal vermutet,
dass dein Programm fehlerfrei abläuft und du nur einen anderen String als den erwarteten 'Url' erhälst,
daher ein völlig falscher Tipp von mir

also lerne daraus:
korrekte Fehlerbeschreibung
=
viel Zeit und Mühe gespart 😉
 
Hallo,

erstmal nochmals danke für Deine Bemühungen.

Ich arbeite mit NetBeans und die IDE meckert bei der Instanzierung nix an.

Deshalb gehe ich davon aus, das ein neues Objekt da ist.

Meine Frage an Dich:

Wie muss ich private Klassen innerhalb eines Applets deklarieren, damit ich sie sauber instanzieren
kann. Wenn Du meinen anfänglichen Code nochmal durchsiehst....wo ist da der Haken? Das sieht doch
erstmal simpel und sauber aus, oder?

Grüsse

RM
 
Hallo,

also ok - ich habe eine Klasse instanziert, die es - nach den gängigen Java-Regeln - gar nicht geben dürfte.
Sehe ich das richtig - oder sehe ich das falsch? Meine IDE - NetBeans - meckert nicht - es scheint alles in Ordnung zu
sein....aber trotzdem läuft es nicht so richtig....
....

..übrigens....ich programmiere ca. seit 3 Jahren in VB und was mich wundert ist, das NetBeans keine Fehlermeldung ausspuckt, mit der ich etwas anfangen kann.

........====> um nochmal auf meinen ursprünglichen Code zurückzukommen.....wo hapert es da?
 
> also ok - ich habe eine Klasse instanziert, die es - nach den gängigen Java-Regeln - gar nicht geben dürfte.

verstehe ich nicht, was ist eine Klasse die es nicht geben darf?
wo hast du die instanziiert, kenntst du überhaupt den Unterschied zwischen Variablen deklarieren und Instanziieren/ Erzeugen?

man kann Variablen deklarieren und Objekte erzeugen,
das sind verschiedene Dinge, z.B. könnte die Objekterzeugung erst von späteren Benutzereingaben abhängen,

Variablen die nur auf null zeigen sind was ganz normales in Java,
da muss man schon selber aufpassen was man wann wo tut,

gerade noch beim Programmieren und Testen eines Codes bekomme ich selber auch ständig NullPointerExceptions,
man vergisst ja auch manchmal was,
kein Problem, dann setzt man es richtig und fertig, dauert 1 min wenn man später erstmal weiß worum es geht,
keine x Tage im Forum 😉


--------
private MenuPunkt PoMenuPunkt;
ist ziemlich gleichbedeutend mit
private MenuPunkt PoMenuPunkt = null;

eine mögliche Deklaration + Erzeugung ist
private MenuPunkt PoMenuPunkt = new MenuPunkt();

du machst es innerhalb deiner prrvaten Klasse doch genauso:
private String [] PsBeschriftungSub = new String [20];
wenn da nur
private String [] PsBeschriftungSub;
stände, hättest du woanders im Programm wahrscheinlich eine NullPointerException, beim Zugriff auf PsBeschriftungSub
 
Hast du überhaupt schon mal ein Javabuch, -tutorial von innen gesehen?
Dir scheinen die absoluten Grundlagen zu fehlen.

Und das du seit drei Jahren in VB programmierst hilft dir absolut
nicht bei Sprachen wie Java und C++ (teilweise auch nicht bei C)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben