Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi. Eine Frage zu Events. Ich hab 2 Labels und eine Choice. Wenn ich in der Choice nen Eintrag auswähle soll Label1 setVisible(false) gesetzt werden und Label2 setVisible(true). Ich hab in der Choice nen MouseListener implementiert und wollte eigentlich mousePressed benutzen um die beiden setVisibles zu setzen. Da krieg ich aber nen Fehler beim compiliern, dass Label1.setVisible(false) als statische Methode nicht in einer nicht-statischen aufgerufen werden kann oder so. Zu sagen ist vieleicht noch, dass ich für jede Komponente eine eigene Klasse habe und die jeweils von Choice und von Label ableite.
Ne nich in der Main-Methode.
Ich hab ne eigene Klasse für das Choice (genau wie für das Label auch):
Code:
class X extends Choice implements MouseListener {
public void mousePressed(MouseEvent MEvt) {
Label1.setVisible(false);
}
}
und beim compiliern sagt der mir dann dass ich die statische MEthode setVisible(false) nicht in der nicht-statischen Methode mousePressed referenzieren darf, oder so ähnlich.
Ich werd nachher mal die Meldung posten, kann das bloß jetzt nich tun, weil ich nich zu Hause bin.
Vieleicht gibts ja auch ne ganz andre Lösung. Ich erklär euch mal mein Gesamtproblem.
Ich will ein Applet schreiben auf das ich zeichnen kann. Wenn man in Corel (zum Beispiel) ein Rechteck zeichnet, dann wird das Rechteck schon mal vorgezeichnet, wenn man die Maus gedrückt hält. Und genau sowas will ich auch machen und hab mir überlegt, dass ich einfach 2 Labels nehme. Eins auf das ich die ganzen Figuren zeichne und eins auf das ich nur vorzeichne. Beim Vorzeichnen mach ich das andere einfach nur unsichtbar mit setVisible(false) und zeichne auf das andre Label. Aber ich bin noch am tüfteln und werd wahrscheinlich mit ein bisschen probieren ne bessere Lösung finden. Trotzdem interessierts mich warum ich aus mousePressed heraus nicht einfach setVisible für ne andre Komponente aufrufen kann.
Ist der obenstehende Code die gesamte Definition der Klasse X? Dann gibts 2 Möglichkeiten
1. X ist eine äußere Klasse: In dem Fall kann Label1 semantisch nur eine Klasse
sein, da es keine globalen Sachen (Objekt wäre die falsche Bezeichnung)
außer Klassen gibt. Und der Übersetzer nimmt vermutlich an, daß setVisible eine statische
Methode der Klasse Label1 sein müßte.
2. X ist eine innere Klasse. Dann sollte Label1 eine Instanz einer der äußeren Klassen
sein und es müßte funktionieren.
Auf jeden Fall poste mal etwas mehr relevanten Code
Ich glaub ersteres wird zutreffen. Wenn ich eine Instanz der Klasse Label1 an die Klasse X übergebe, dann müsste es ja eigentlich laufen oder? Ich werds nachher gleich mal versuchen.