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..
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
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
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
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
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...
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 hallo?!?! hat denn da keiner antwort drauf???
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
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??
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
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???
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
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???
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.!!
mamamia Geschrieben 22. August 2002 Autor Geschrieben 22. August 2002 danke dir probier ich morgen gleich aus...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden