mamamia Geschrieben 20. August 2002 Geschrieben 20. August 2002 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.. Zitieren
Dalton Geschrieben 21. August 2002 Geschrieben 21. August 2002 dann schreib in den Konstruktoren doch einfach super(Maske) anstatt super(); Oder hattest du das schon versucht? MfG Dalton Zitieren
Jaraz Geschrieben 21. August 2002 Geschrieben 21. August 2002 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 Zitieren
Dalton Geschrieben 21. August 2002 Geschrieben 21. August 2002 aber ich hab doch gelesen: public JFormattedTextField(JFormattedTextField.AbstractFormatter formatter) Hab ich was verpasst? Oder wo liegt da der Unterschied? Dalton Zitieren
Jaraz Geschrieben 21. August 2002 Geschrieben 21. August 2002 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. Ich kann das ganze leider nicht testen, da ich kein jdk1.4 habe. Gruß Jaraz Zitieren
mamamia Geschrieben 21. August 2002 Autor Geschrieben 21. August 2002 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... Zitieren
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 hallo?!?! hat denn da keiner antwort drauf??? Zitieren
kingofbrain Geschrieben 22. August 2002 Geschrieben 22. August 2002 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 Zitieren
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 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?? Zitieren
kingofbrain Geschrieben 22. August 2002 Geschrieben 22. August 2002 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 Zitieren
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 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??? Zitieren
kingofbrain Geschrieben 22. August 2002 Geschrieben 22. August 2002 Du kannst diese Select-Anweisung in eine eigene Methode schreiben und diese dann aufrufen. k.o.b Zitieren
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 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??? Zitieren
derflix Geschrieben 22. August 2002 Geschrieben 22. August 2002 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.!! Zitieren
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 danke dir probier ich morgen gleich aus... Zitieren
Empfohlene Beiträge
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.