Panelplatzierung nach JFramevergrößerung aktualisieren

Benzbob

Mitglied
Hi ihr,
ich habe ein JFrame mit mehrern JPanels. Die Framegröße ist abhängig von der Bildschirmauflösung und die Panels werden je nach Framegröße ins Frame eingebaut mittels setBounds() und den Methoden JFrame.getWidth und JFrame.getHeight(). Dabei passe ich prozentual die Größen so an wie ich es haben will. Ich benutze also kein Layout für den Frame (setLayout(null)). Das klappt soweit auch alles super. D.h. ich starte das Programm und alles ordnet sich so wie ich es haben will :). Mein Problem besteht darin dass wenn ich nach Programmstart den Frame vergrößer oder verkleiner sich die Panels nicht anpassen obwohl ich sie ja in Abhängigkeit der Frame-Größe eingebaut haben. Gibt es dafür sowas wie ne "Aktualisierung-Methode" nachdem der Frame vergrößert oder verkleiner wurde?

Danke schonmal
 
Hey,
die Frage ist nur an welche Stelle ich das repaint() setze?
Ich meinte nicht das Vergrößern/Verkleinern durch ein Event bspw. Button-click sondern durch die Maus an den Ecken bzw Kanten. Sollte ich dafür extra ein MouseListener einbauen ( ob das überhaupt funktionieren würde..?!) oder gibt es da eine andere Möglichkeit?
 
So, damit hab ich es nun hinbekommen, danke dir also für deine Hilfe.
Musste zwar die Bounds neu setzen, hat also nicht mit repaint() oder validate() geklappt aber es funktioniert trotzdem!

Ich poste mal ein kleines Beispiel für jeden den es interessiert:

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
 
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Resize extends JFrame {
 
	private JLabel label;
	private JPanel panel;
	
    public Resize() {
       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(null);
        setVisible(true);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        setSize(new Dimension((int)(d.width*0.5),(int)(d.height*0.5)));
        setLocationRelativeTo(this.getOwner());
        
        addComponentListener(new ComponentListener() {
			public void componentHidden(ComponentEvent e) {
				
			}
			
			public void componentMoved(ComponentEvent e) {
				
			}
			
			public void componentResized(ComponentEvent e) {
				panel.setBounds(getWidth()/4,getHeight()/4,getWidth( /2,getHeight()/2);
			}
			
			public void componentShown(ComponentEvent e) {	
			}
		
		});
       
        label = new JLabel("Hello World");
        
        panel = new JPanel();
        panel.setBounds(getWidth()/4,getHeight()/4,getWidth()/2,getHeight()/2);
        panel.setBackground(Color.ORANGE);
        panel.add(label);
       
        add(panel);
       
    }
   
    public static void main(String[] args) {
    	
        new Resize();
       
    }
}
 
Zurück