Zum Inhalt springen

[ Vererbung ]


Empfohlene Beiträge

Geschrieben

hallo..

ich habe hier ein kleines problem wenn ich ein objekt vererben will..

bsp:

import...

public class Input extends JFormattedTextField{

MaskFormatter Maske = new MaskFormatter();

 public Input(int länge, String Text) throws ParseException{

super();

// source

}

public Input(char C, String Möglich)throws ParseException{

super();

// source

// source

}

}

ich überlagere also Input 2 mal..

ich muss aber Maske auf das Textfeld bringen

normaler weise schreib ich dann:

JFormattedTextField Eingabe = new JFormattedTextField(Maske);

hier in unserem beispiel müsste ich also schreiben super(Maske);

aber da bekomm ich folgenden fehler:

Cannot reference Maske before supertype constructor has been called..

was soll ich da nur machen???

wenn ihr es nicht wisst habt ihr dann wenigstens ne url für nen forum oder so wo mir geholfen werden kann??

ich brauch das für die arbeit..

Geschrieben
Original geschrieben von Dalton

dann schreib in den Konstruktoren doch einfach super(Maske) anstatt super();

Oder hattest du das schon versucht?

LOL, wie wärs mal mit lesen.

Nimm nen leeren Konstruktor, also super() und setze danach den Abstractformatter.

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

protected void setFormatter(JFormattedTextField.AbstractFormatter format)

Sets the current AbstractFormatter.

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

Gruß Jaraz

Geschrieben
Original geschrieben von Dalton

aber ich hab doch gelesen:

Ich meinte damit, dass er genau das gemacht hat, was du vorgeschlagen hast. Dabei ist sein Fehler aufgetaucht. :D

Ich kann das ganze leider nicht testen, da ich kein jdk1.4 habe.

Gruß Jaraz

Geschrieben

ok das geht..

wenn ich jetzt die maske änder

von was weiss ich 4 zeiche auf 5

schreib ich doch Maske.setMask("*****"); (für 5 Zeichen)

danach wenn ich das gemcht habe dann muss ich sie wieder auf das TextField installieren

das geht mit Maske.install(JFTextField)

wenn ich es normal mache:

JFTF Eingabe = new JFTF(Maske);

da kann ich dann schreiben:

Maske.install(Eingabe);

also installier die Maske auf das Feld Eingabe

wie mach ich das aber bei einer Vererbung???

Maske.install(); --> geht nicht

Maske.install(super); --> geht nicht will er nach super nen '.'

Maske.install(this); --> bringt nichts

was soll ich da machen??

wenn das noch geht dann hab ichs...

Geschrieben

Du kannst doch die Eingabe casten? Wenn ich mich an meine Java-Zertifizierung richtig erinnere, dann kann man Elternobjekten die Kinder zuweisen.

es sollte also mit Maske.install((JFormattedTextField) Eingabe) funktionieren.

k.o.b

Geschrieben

hallo..

ich glaube du hast mich nicht recht verstanden..

ich schreibe ne classe

public class Input extends JFormattedTextField {

public Input{

super();

MaskFormatter Maske = new MaskFormatter();

Maske.setMask("*****");

code

code

dann änder ich die Maske

Maske.setMask("**.**.**");

dann will ich die Maske wieder auf das TextField neu installieren

Maske.install(was muss hier rein??);

eigentlich super aber das geht ja net..

}

}

jetzt verstanden??

Geschrieben

Hallo nochmal.

Warum musst Du denn beim ersten mal, wenn Du die Maske setzt, diese nicht installieren?

Ist vielleicht eine blöde Idee, aber probieren schadet ja nichts:

Maske.install((JFormattedTextField) this);

Welche Klassen verwendest Du denn? Im Standard SDK sind sie doch nicht drin, oder?

k.o.b

Geschrieben

hallo

ich bin jetzt schonmal weiter gekommen..

mit Maske.install(this); kann ich die Maske installieren..

ich hab aber 4 Masken die je nach Tasten druck (von "A","U","K" oder einer Zahl) ändern..

ich hab also einen KeyListener mit in mein prog eingebunden..

in dem KeyListener kann ich aber nicht mehr mit this arbeiten..

im konstrucktor setze ich die Maske fest..

mit einer select anweisung..

ich müsste also aus dem KeyListener wieder in die select anweisung Springen...

aber wie soll das gehen???

Geschrieben

naja das geht auch nicht weil dann this sich auf die methode beziehen würde und es soll sich aber auf die andere Methode beziehen...

das hab ich mir auch schon gedacht..

noch ne andere idee???

Geschrieben

Ich hoffe ich hab das Problem richtig verstanden: du willst in dem Eingabefeld je nach Bedarf die Maske ändern. Der Aufruf zum Ändern der Maske kommt dabei von "aussen" (also nicht aus der eigenen Klasse).

Dann sollte es doch einfach so funktionieren:

public class Input extends JFormattedTextField {

private MaskFormatter Maske;

public Input() {

super();

Maske = new MaskFormatter();

...

}

public void SetzeMaske(String m) {

Maske.setMask(m);

Maske.install(this);

}

}

Anwendung:

eingabefeld = new Input();

eingabefeld.SetzeMaske("*****);

"this" bezieht sich übrigens immer auf das aktuelle Objekt, nicht auf eine Methode etc.!!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...