Veröffentlicht 20. August 200223 j 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..
21. August 200223 j dann schreib in den Konstruktoren doch einfach super(Maske) anstatt super(); Oder hattest du das schon versucht? MfG Dalton
21. August 200223 j 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
21. August 200223 j aber ich hab doch gelesen: public JFormattedTextField(JFormattedTextField.AbstractFormatter formatter) Hab ich was verpasst? Oder wo liegt da der Unterschied? Dalton
21. August 200223 j 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
21. August 200223 j Autor 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...
22. August 200223 j 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
22. August 200223 j Autor 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??
22. August 200223 j 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
22. August 200223 j Autor 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???
22. August 200223 j Du kannst diese Select-Anweisung in eine eigene Methode schreiben und diese dann aufrufen. k.o.b
22. August 200223 j Autor 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???
22. August 200223 j 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.!!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.