1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
871
871
EMPFEHLEN
-
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
-
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
-
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
-
picture resize
Von kaits im Forum PHPAntworten: 7Letzter Beitrag: 30.11.10, 17:38 -
resize
Von thomy800 im Forum JavaAntworten: 7Letzter Beitrag: 28.07.08, 06:54 -
Bild resize - need help
Von sheep87 im Forum PHPAntworten: 6Letzter Beitrag: 16.09.07, 17:30 -
Bei resize des Fensters auch resize der Controls
Von SixDark im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 25.11.03, 10:27 -
Image Resize
Von Subwoover im Forum PHPAntworten: 2Letzter Beitrag: 18.04.03, 11:12





Zitieren
Login





