tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von javaDeveloper2011
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
871
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nob Nob ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    75
    Hallo zusammen

    Ich habe ein Fenster welches 100x100 Pixel gross ist. Jetzt habe ich darin 10 Labels mit einer Höhe von 10 Pixel je Label. Somit ist das ganze Fenster genau gefüllt. Jetzt möchte ich dem User die Möglichkeit bieten, das Fenster zu vergrössern.

    Wenn man das Fenster auf nun auf 200x200 Pixel zieht, dann sollten die Labels (also der Text) doppelt so gross erscheinen, so dass wiederum das ganze Fenster ausgefüllt ist. Das ganze sollte aber auch mit Bildern funktionieren.

    Ich suche also nach einer Möglichkeit, das ganze Fenster zu "zoomen".

    Bin für jede Idee dankbar
     

  2. #2
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Hallo Nob,

    Ich würde immer die Fenstergröße setzen, dann geht alles automatisch und ohne Sachen wie extra Listener, Methoden überschreiben, Berechnungen, ect.

    Ich hab mal nen kleinen Beispielcode geschrieben (pack macht Frame anfangs genau groß genug)

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    package tutorials;
     
    import java.awt.GridLayout;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
    public class BildZoomFenster extends JFrame{
     
        ImageIcon[] bilder = new ImageIcon[10];
     
        public BildZoomFenster(){
            super("BildZoomFenster");
            [B]setLayout(new GridLayout(5, 2));[/B] // Zusers zahl von "zellen" in y-Richtung, dann in x-Richtung
            // Erzeugen der Bilder
            bilder[0] = new ImageIcon(getClass().getResource("/tutorials/images/ball.gif")); // Hohlt imige mithilfe von URL
            add(new JLabel(bilder[0]));
            bilder[1] = new ImageIcon(getClass().getResource("/tutorials/images/coffe.png"));
            add(new JLabel(bilder[1]));
            bilder[2] = new ImageIcon(getClass().getResource("/tutorials/images/facebook.png"));
            add(new JLabel(bilder[2]));
            bilder[3] = new ImageIcon(getClass().getResource("/tutorials/images/flower.png"));
            add(new JLabel(bilder[3]));
            bilder[4] = new ImageIcon(getClass().getResource("/tutorials/images/icon.gif"));
            add(new JLabel(bilder[4]));
            bilder[5] = new ImageIcon(getClass().getResource("/tutorials/images/java.png"));
            add(new JLabel(bilder[5]));
            bilder[6] = new ImageIcon(getClass().getResource("/tutorials/images/pc.png"));
            add(new JLabel(bilder[6]));
            bilder[7] = new ImageIcon(getClass().getResource("/tutorials/images/us_flag.gif"));
            add(new JLabel(bilder[7]));
            bilder[8] = new ImageIcon(getClass().getResource("/tutorials/images/windows.jpg"));
            add(new JLabel(bilder[8]));
            bilder[9] = new ImageIcon(getClass().getResource("/tutorials/images/youtube.png"));
            add(new JLabel(bilder[9]));
            [B]//setSize(200, 200);
            pack();[/B]
        }
     
        public static void main(String[] args) {
            BildZoomFenster bzf = new BildZoomFenster();
            bzf.setVisible(true);
        }
     
    }

    Bei den Labels würde gehts natürlich nicht ohne ComponentListener, sofern du die Schriftgröße je nach fenstergröße anpassen willst

    Hier das beispiel dafür:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    
    package tutorials;
     
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ComponentEvent;
    import java.awt.event.ComponentListener;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
    public class ZoomFenster extends JFrame implements ComponentListener{
     
        JLabel[] label = new JLabel[10];
     
        public ZoomFenster(){
            super("ZoomFenster");
            addComponentListener(this);
            setLayout(new GridLayout(5, 2)); // Zusers zahl von "zellen" in y-Richtung, dann in x-Richtung
            for(int i=0; i<10; ++i){
                label[i] = new JLabel("Label"+i);
                add(label[i]); // Jewails nummewriertes label wird hinzugefügt
            }
            setSize(200, 200);
        }
     
        public static void main(String[] args) {
            ZoomFenster zf = new ZoomFenster();
            zf.setVisible(true);
        }
     
        // Wird automatisch aufgerufen wenn die bounded propery Fenstergröße geändert wird
        public void componentResized(ComponentEvent e) {
            int schriftgroesse = getSize().height / 9;
            for(int i=0; i<label.length; ++i){
                label[i].setFont(new Font("Arial", 1, schriftgroesse)); // 1 bedeuted nicht fetter/nicht kursiver Text
            }
        }
     
        public void componentMoved(ComponentEvent e) {
        }
     
        public void componentShown(ComponentEvent e) {
        }
     
        public void componentHidden(ComponentEvent e) {
        }
     
    }

    Damit du auch die Bilder hast und meine beispiele gleich anschauen kannst, hab ich mal die beiden klassen jewails in jars verpackt angehängt.

    javaDeveloper2011
    Angehängte Dateien Angehängte Dateien
    Nob bedankt sich. 

  3. #3
    Nob Nob ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    75
    Hallo javaDeveloper2011

    WOW!! Vielen DANK für das SUPER BEISPIEL!
    Das mit dem Text funktioniert super, genau was ich gesucht habe. Das mit den Bildern leider nicht, aber ich versuche auch mal so ein Listener hinzuzufügen.

    Nochmals DANKE!
     

Ähnliche Themen

  1. picture resize
    Von kaits im Forum PHP
    Antworten: 7
    Letzter Beitrag: 30.11.10, 17:38
  2. resize
    Von thomy800 im Forum Java
    Antworten: 7
    Letzter Beitrag: 28.07.08, 06:54
  3. Bild resize - need help
    Von sheep87 im Forum PHP
    Antworten: 6
    Letzter Beitrag: 16.09.07, 17:30
  4. Bei resize des Fensters auch resize der Controls
    Von SixDark im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 25.11.03, 10:27
  5. Image Resize
    Von Subwoover im Forum PHP
    Antworten: 2
    Letzter Beitrag: 18.04.03, 11:12

Stichworte