Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[ Vererbung ]

Empfohlene Antworten

Veröffentlicht

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..

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

Oder hattest du das schon versucht?

MfG

Dalton

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

aber ich hab doch gelesen:

public JFormattedTextField(JFormattedTextField.AbstractFormatter formatter)

Hab ich was verpasst? Oder wo liegt da der Unterschied?

Dalton

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

  • 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...

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

  • 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??

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

  • 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???

Du kannst diese Select-Anweisung in eine eigene Methode schreiben und diese dann aufrufen.

k.o.b

  • 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???

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.