Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich würde gerne ein Hintergrundbold in einem Frame benutzen, so weit gelingt mir das auch ohne Probleme, jedoch soll das Bild sich automatisch der Größe des Frames anpassen -> bei einem Resize also die Methode rapaint oder wie auch immer aufrufen!

Leider habe ich k.A. wie ich das realisieren soll!

Bin für jeden "brauchbaren" *g* vorschlag dankbar!

Thx

Gandalf

Geschrieben

Hi

ich selbst weiss jetzt nicht 100%ig wie es geht aber ich würde mir erstmal die Window Listener anschaun. Da gibt es doch bestimmt was, dass der benachrichtigt wenn die Grösse verändert wurde.

Gibt es keinen entsprechenden Listener, dann überschreibe einfach die entsprechende Klasse und rufe die methode repaint zusätzlich in der resize auf ;)

Thomas

Geschrieben

Nein,

im WindowListener gibt es so etwas nicht,

das ist ja mein Problem! Es wird "kein" WindowEvent ausgelöst wenn sich dir größe des Fensters ändert!

hab mir jetzt beholfen, in dem ich mir die größe des Frames nach dem ersten anzeigen merke, und in der Paint Methode dann Abfrage ob sich die Größe geändert hat, funktioniert aber irgendwie nicht ganz Fehlerfrei!

Stefan

Geschrieben
Original geschrieben von GandalfTheWhite

hab mir jetzt beholfen, in dem ich mir die größe des Frames nach dem ersten anzeigen merke, und in der Paint Methode dann Abfrage ob sich die Größe geändert hat, funktioniert aber irgendwie nicht ganz Fehlerfrei!

Hallo

Versuche das mal in der Funktion validate deines Containers auszuführen. Vielleicht klappt das besser.

Gruß Jaraz

Geschrieben

hallo!

hatte das proble auch schon mal. musste ien shape passend für ein panel machen.

habe mir dann eine funktion gebaut, die mir das verhältnis von der kleineren seite von meinem panel zu der kleineren seite von meinem shape zurückgibt. dann das ganze noch durch ein AffineTransform, und dann is gut!

class ....... extendx JPanel{

public void paint(graphics g){

.......

AffineTransform at = new AffineTransform();

double tt= trans(myShape);

at.scale(tt,tt);

graphics.transform(at);

graphics.draw(myShape);

.......

}

private double trans(Shape s){

if(this.getHeight() < this.getWidth()){

if(s.getBounds().height > s.getBounds().width){

return (this.getHeight() / s.getBounds().height);

}

else{

return (this.getHeight() / s.getBounds().width);

}

}

else{

if(s.getBounds().height > s.getBounds().width){

return (this.getWidth() / s.getBounds().height);

}

else{

return (this.getWidth() / s.getBounds().width);

}

}

}

hoffe geholfen zu haben und viel spass in der hitze!

bigredeyes

Geschrieben

besser:

private double trans(Shape s){

double erg, vh, vw;

if((vh=(double)getHeight()/myShape.getBounds2D().getHeight())<(vw=(double)getWidth()/myShape.getBounds2D().getWidth())){

return vh;

}

return vw;

}

bigred

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...