setMinimumSize mit painComponent funktioniert nicht

Jungspund

Mitglied
Hallo ich stehe grad total auf dem Schlauch und weiß nicht wo mein Fehler liegt.
in folgender Klasse erstelle ich ein nur ein JPanel mit gemaltes Image in diesem und möchte eine Minimum size für jenes JPanel einfügen. Jedoch wird diese Minimumsize nicht mehr akzeptiert? :

EDIT: Fehler gelöst habe vergessen das JFrame mit minimaler Size zu initialisiern...
Java:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Slogan extends JPanel{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static Image i;
	
	public Slogan() throws MalformedURLException, IOException {
		super();
		this.setSize(600,200);
		i = ImageIO.read(getClass().getResource("/image.jpeg"));
		this.setMinimumSize(new Dimension(400,100));
		this.setMaximumSize(new Dimension(1000,400));
		this.setVisible(true);
	}
	
	public void paintComponent(Graphics g) {
        g.drawImage(i, 0, 0, this.getWidth(), this.getHeight(), this);
        setMinimumSize(new Dimension(600,200));
    	
	}
	
	public static void main(String[] args) throws MalformedURLException, IOException {
		JFrame f = new JFrame();
		f.setSize(600,200);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.add(new Slogan());
		f.setVisible(true);
	}
	
	
}
 
Zuletzt bearbeitet:
Nun besteht aber das Problem, das ich mit
Java:
f.setMaximumSize(new Dimension(600,200));

keine miximale größe für das Frame festlegen kann?

Ersteinmal zur Allgemeinen Problembeschreibung.
Ich möchste ein Frame haben, welches ich mit einer minimalen, und einer maximalen Größe versehe.
Die minimale Größe z.B soll (650,650) betragen, und die maximale Größe(950,650). Bin dabei auf eine sehr unschöne Lösung gestoßen, indem ich folgenden Code einfüge:
Java:
f.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsListener() {
			
			public void ancestorResized(HierarchyEvent e) {
				if(f.getWidth() > 800) {
					int height = f.getHeight();
					f.setVisible(false);
					f.setSize(800, height);
				}
					
				if(f.getHeight() > 300) {
					int width = f.getWidth();
					f.setVisible(false);
					f.setSize(width, 300);
				}
				f.setVisible(true);
			}
			
			public void ancestorMoved(HierarchyEvent e) {
				// TODO Auto-generated method stub
				
			}
		});

Hierbei wird jedoch immer wieder das Fenster "neu erstellt" und verliert seinen Focus.
Gibt es irgendeine sauberere Lösung hierfür?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück