Hallo, ich lerne aktuell Swing und beschäftige mich gerade mit Grafiken. Ich habe gelernt, dass ich die repaint()-Methode brauche, weil Grafiken sonst "zerstört" werden können, z.B. wenn ich ein anderes Fenster darüber ziehe. Allerdings scheint folgendes Beispiel ohne auszukommen. Woran liegt das?
Des Weiteren ist mir der Sinn der Methoden public Dimension getPreferredSize() und public Dimension getMinimumSize() nicht klar. Also ich verstehe was sie machen: ohne diese Methoden werden die 4 Grafiken nicht sofort angezeigt, weil die Panels dann zu klein sind, aber wo werden die beiden Methoden denn überhaupt aufgerufen in dem Programm?
Grüße
Des Weiteren ist mir der Sinn der Methoden public Dimension getPreferredSize() und public Dimension getMinimumSize() nicht klar. Also ich verstehe was sie machen: ohne diese Methoden werden die 4 Grafiken nicht sofort angezeigt, weil die Panels dann zu klein sind, aber wo werden die beiden Methoden denn überhaupt aufgerufen in dem Programm?
Code:
public class Bitmaps extends JPanel {
private Image img;
public Bitmaps(String fname) {
img = getToolkit().getImage(fname);
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 0);
try {
mt.waitForAll();
} catch (InterruptedException e) {
}
setSize(img.getWidth(this), img.getHeight(this));
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(img, 1, 1, this);
}
public Dimension getPreferredSize() {
return new Dimension(img.getWidth(this), img.getHeight(this));
}
public Dimension getMinimumSize() {
return new Dimension(img.getWidth(this), img.getHeight(this));
}
}
Code:
public class BitmapUser extends JFrame {
public static void main(String[] args) {
BitmapUser wnd = new BitmapUser();
}
public BitmapUser() {
super("Bitmap-Komponente");
setBackground(Color.lightGray);
setSize(100, 100);
Container cp = getContentPane();
cp.setLayout(new GridLayout(2, 2));
cp.add(new Bitmaps("src/img.gif"));
cp.add(new Bitmaps("src/img.gif"));
cp.add(new Bitmaps("src/img.gif"));
cp.add(new Bitmaps("src/img.gif"));
pack();
setVisible(true);
}
}
Grüße