tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Pasukaru
  • 1 Beitrag von HonniCilest
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
521
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Marc79 Marc79 ist offline Mitglied Silber
    Registriert seit
    Oct 2010
    Beiträge
    69
    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
     

  2. #2
    Avatar von Pasukaru
    Pasukaru Pasukaru ist offline Mitglied
    Registriert seit
    Apr 2010
    Ort
    Kaldadewui
    Beiträge
    16
    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)
    Marc79 bedankt sich. 

  3. #3
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    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:
    Code java:
    1
    2
    
     Dimension preferredLayoutSize(Container target) 
              Determines the preferred size of the target container using this layout manager, based on the components in the container.
    Das Target ist hierbei dein Label.
    5. Skaliere dein Icon und setze es auf das Label.
    Marc79 bedankt sich. 
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  4. #4
    Marc79 Marc79 ist offline Mitglied Silber
    Registriert seit
    Oct 2010
    Beiträge
    69
    Hi,

    danke für eure Ideen ... beide Tipps führen zum Erfolg

    gruß Marc
     

Ähnliche Themen

  1. Maximale Größe: Array von PHP an Flash
    Von deostift im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 02.07.07, 14:10
  2. Maximale größe einer Datei beim Upload!
    Von Seven Secrets im Forum PHP
    Antworten: 7
    Letzter Beitrag: 09.05.06, 14:15
  3. Maximale Bitmap-Größe in Corel
    Von hotzen1 im Forum Vektor-Programme
    Antworten: 3
    Letzter Beitrag: 13.01.06, 10:55
  4. 3DSMAX - Maximale (Datei-) Größe von Texturen?
    Von LosMikEos im Forum 3D Studio Max
    Antworten: 5
    Letzter Beitrag: 07.04.05, 14:02
  5. Maximale HDD-Größe an Asus TUSL2-C
    Von plonk im Forum Hardware
    Antworten: 2
    Letzter Beitrag: 03.10.04, 13:26

Stichworte