# static- Methoden überschreiben



## Gast (10. Jul 2008)

Hallo,

ist sicher eine blöde Frage aber kann man staic- Methoden überschreiben, so das ich das Verhalten der SuperKlassenStaticMethode erbe und ein bisschen ein Verhalten zu dieser Methode dazuprogrammiere,

Bin mir da nicht mehr ganz sicher,

Dankeschön,


----------



## Generic1 (10. Jul 2008)

Ups vergessen einzuloggen,

ganz konkret geht es um das Fenster unten,
Dieses wird ja erzeugt mit


```
PrinterJob job = PrinterJob.getPrinterJob();            
            PageFormat pf = job.defaultPage();
            pf.setOrientation(ORIENTATION_QUERFORMAT);                          
            PageFormat pf2 = job.pageDialog(pf);  // hier wird das Fenster erzeugt
```

Ich würde aber in diesem Fenster noch ein paar andere Sachen benötigen, daher möchte ich die Methode überschreiben, damit ich etwas hinzufügen kann,

Ist das möglich bzw. wie,


----------



## Atze (10. Jul 2008)

klar, warum sollte das nicht gehen? heißt bei statischen methoden dann aber überdeckt, glaube ich
gehen sollte es aber in jedem fall

*update*

achso, hab dich glaube ich falsch verstanden

also du kannst sie entweder so übernehmen wie sie ist, dann erbst du sie, oder du kannst sie überschreiben / überdecken (wie auch immer), aber dann musst du sie komplett neu implemetieren

wie sollte es denn anders gehen? woher soll der compiler denn wissen, was du von der alten methode behalten willst, und wie willst du deinen "zusatzcode" denn hinzufügen?


----------



## Der Müde Joe (10. Jul 2008)

static + Vererbung sind Feinde....

Klar kann es sowohl in Vater als auch Kind Klasse die selbe statische Methode geben, aber halt statisch aufgerufen

Vater.myStaticMeth();
Kind.myStaticMeth();

aber mit vererbung hat das nix zu tun (statische Bindung)


----------



## Generic1 (10. Jul 2008)

Ist es möglich, dass ich dem Fenster z.B.: noch ein JLabel und ein JTextField unten oder oben hinzufüge?

Ist das der richtige Weg, die Methode job.pageDialog(pf); -> pageDialog() zu überschreiben????

Fragen über Fragen,
lg


----------



## Generic1 (10. Jul 2008)

Ich komm einfach nicht an das "Seite einrichten" Fenster heran, weiß da jemand Rat (oder auch Aufmunterung das ich weitersuchen soll


----------



## musiKk (10. Jul 2008)

Wenn du einfach nur oben und unten etwas hinzufuegen willst, dann kannst du ja ein eigenes JFrame erzeugen (oder Dialog oder so) und dann oben dein Label hinschreiben, in die Mitte den PrintDialog und drunter noch ein Label oder was anderes.

Ich habe mir deinen Dialog jetzt aber nicht angeschaut, du musst natuerlich eine Instanz des Dialog-Objekts in die Hand bekommen. Wenn die statische Methode alles macht und dir nur das Ergebnis liefert, klappt das natuerlich nicht. Das wuerde ich aber auch als argen Mangel betrachten.


----------



## Generic1 (10. Jul 2008)

musiKk hat gesagt.:
			
		

> Wenn die statische Methode alles macht und dir nur das Ergebnis liefert, klappt das natuerlich nicht. Das wuerde ich aber auch als argen Mangel betrachten.





genau um das gehts, wie komme ich an die Instance, da scheitert das ganze, das andere ist ja eher ein Kinderspiel aber leider wird mit:


```
PageFormat pf2 = job.pageDialog(pf);
```

der "Seite einrichten" Dialog erzeugt und da kommt man nicht ran an die Instance, ich hab die halbe API schon durchsucht aber leider nichts gefunden,

Wenn jemand abhilfe weiß dann bitte bitte melden, ich steh echt an,


----------



## musiKk (10. Jul 2008)

Vielleicht solltest du dann mal einen Link auf die Library oder die API liefern. Bisher ist das alles reichlich unkonkret.


----------



## Generic1 (10. Jul 2008)

Hab ich doch eh schon, da unten liegt das problem, wie komme ich zu einer Instance auf das JFrame ("Seite einrichten"), dass durch die Zeile (Siehe auch unten) "PageFormat pf2 = job.pageDialog(pf);" geöffnet wird?



```
PrinterJob job = PrinterJob.getPrinterJob();           
            PageFormat pf = job.defaultPage();
            pf.setOrientation(ORIENTATION_QUERFORMAT);                         
            PageFormat pf2 = job.pageDialog(pf);  // hier wird das Fenster erzeugt
```


----------



## Atze (10. Jul 2008)

das fenster kommt aber vom os, es wird nur durch deinen java-printjob aufgerufen

ändern kannst du es nicht, nach dem aufruf macht das os weiter


----------

