2Danke
ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
521
521
EMPFEHLEN
-
Hallo zusammen,
ich brauche wieder einen Ansatz oder einen Tipp.
Ich habe eine GUI, die aus mehreren verschalchtelten Layouts besteht.
Dadurch stelle ich sicher, dass alle Steuerelemten auf erschiedenen Bildschirmgrößen ordentlich dargestellt werden.
Soweit funktioniert auch alles super. Ich möchte nur noch ein Bild skalieren und muss dazu die noch maximal übrig gebliebene Größe ermitteln.
Die Maske sieht ungefähr so aus:
Oben eine Zeile als Kopfzeile
Mitte links ein gap (also nur ein Label als Abstand zum Rand)
Mitte Mitte ein Bild
Mitte rechts ein Menü mit Buttons
Unten eine Zeile als Fußzeile
So, das Bild selbst ist jetzt im HD-Auflösung und für einige Bildschirme zu groß.
Bevor ich jetzt unterschiedliche Bildgrößen erzeuge, wil ich es lieber skalieren.
Im Moment ist das Bild nicht ganz zu sehen, weil nur ein Teil im Bereich "Bild" sichtbar ist.
So wird aktuell das Bild platziert:
Code :1 2 3
ImageIcon img = new ImageIcon (ClassLoader.getSystemResource("grfx/pi1.jpg")); JLabel picLabel = new JLabel(img); picPanel.add(picLabel, BorderLayout.CENTER); // Bild wird in CENTER platziert
hiermit würde ich die Skalierung vornehmen:
Code :1
img.setImage(img.getImage().getScaledInstance(w, h,Image.SCALE_DEFAULT));
Wenn ich für w und h feste Werte angebe, dann wird das Bild auch skaliert.
Doch, wie bekomme ich heraus, wie viel Platz für "Bild" noch zur Verfügung steht.
Ich habe da einen Ansatz, ich könnte alle Bereich, die schon bereits da sind von der Screen.Size abziehen und somit käme ich auf einen Wert der quasi übrig bliebe.
Ich denke nur, dass das ziemlich umständlich sein wird, sollte die Maske mal wachsen.
Gib es eine Möglichkeit zu sagen: Skalier so groß/klein, was noch übrig ist****?
Danke und Gruß
Marc
-
Hab das gleiche Problem, die Größe auslesen.. allerdings beim GridBagLayout.
Aber ich hab ne kleine Anmerkung:
Falls du dein Bild dynamisch skalierst (Also jedesmal, wenn die Größe des Fensters verändert wird, wird das Bild neu skaliert), dann wird das Bild durch deine Vorgehensweise immer unschärfer, da du das Bild aus dem (evtl. bereits skalierten) "img" nimmst, und nich das Original.
Wenn das Bild allerdings nur einmal Skaliert wird/werden soll, vergiss was ich geschrieben hab.
EDIT - Post ist zwar schon älter.. (Habs zu spät bemerkt)
Aber ich hab die LÖSUNG:
Also - Beim GridBagLayout, besser gesagt bei den GridBagConstrains gibts eine Variable "fill" - Die kann auf
HORIZONTAL , VERTICAL oder BOTH
gesetzt werden.
In deinem Fall müsstest du wahrscheinlich in deinem Border-Layout noch ein JPanel mit GridBagLayout einfügen. Dann kannst du dann die Größe des Components über die GridBagConstrains - hier speziell fill - anpassen.Geändert von Pasukaru (11.01.11 um 00:24 Uhr)
-
11.01.11 12:36 #3
Wenn ich mich nicht irre müsste es so gehen:
1. Erstelle ein Objekt BorderLayout
2. Setze dieses Layout in dein Panel
3. Erstelle das Label ohne ImageIcon und füge es deinem Panel hinzu
4. Nutze folgende Methode des BorderLayouts:
Das Target ist hierbei dein Label.Code java:
5. Skaliere dein Icon und setze es auf das Label.Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Hi,
danke für eure Ideen ... beide Tipps führen zum Erfolg
gruß Marc
Ähnliche Themen
-
Maximale Größe: Array von PHP an Flash
Von deostift im Forum Flash PlattformAntworten: 1Letzter Beitrag: 02.07.07, 14:10 -
Maximale größe einer Datei beim Upload!
Von Seven Secrets im Forum PHPAntworten: 7Letzter Beitrag: 09.05.06, 14:15 -
Maximale Bitmap-Größe in Corel
Von hotzen1 im Forum Vektor-ProgrammeAntworten: 3Letzter Beitrag: 13.01.06, 10:55 -
3DSMAX - Maximale (Datei-) Größe von Texturen?
Von LosMikEos im Forum 3D Studio MaxAntworten: 5Letzter Beitrag: 07.04.05, 14:02 -
Maximale HDD-Größe an Asus TUSL2-C
Von plonk im Forum HardwareAntworten: 2Letzter Beitrag: 03.10.04, 13:26





Zitieren
Login





