S
SlaterB
Gast
wie funktioniert das paint-Überschreiben in AWT?
ich finde nur Beispiele, in denen paint direkt im Frame überschrieben wird, was auch gut funktioniert,
aber wenn ich Subkomponenten einfüge und die paint überschreiben soll funktioniert das bei mir nicht
(deren paint wird beim repaint() des Frames nicht aufgerufen)
Beispiel:
--------------------
ein anderes Problem:
die setSize()-Aufrufe haben bei den Unterpanels keine Wirkung
gibt es eine andere Möglichkeit die Größe zu setzen außer getPreferredSize() zu überschreiben?
wenn ich übrigens in paint setSize(300, 300); aufrufe, dann passiert da auf einmal etwas..
(bei Interesse bitte ausprobieren, getPreferredSize() auskommentieren)
ich finde nur Beispiele, in denen paint direkt im Frame überschrieben wird, was auch gut funktioniert,
aber wenn ich Subkomponenten einfüge und die paint überschreiben soll funktioniert das bei mir nicht
(deren paint wird beim repaint() des Frames nicht aufgerufen)
Beispiel:
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test extends Frame {
public Test() {
super("Test");
setSize(300, 300);
add(new MyPanel());
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void paint(Graphics g) {
super.paint(g);
System.out.println("paint in frame");
// erscheint 10x bei 10x repaint(), alle Sekunde einmal
}
public static void main(String[] args) {
Test t = new Test();
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t.repaint();
}
}
class MyPanel extends Panel {
public MyPanel() {
add(new MyPanel2());
setSize(300, 300);
setBackground(Color.BLUE);
}
public Dimension getPreferredSize() {
return new Dimension(300, 300);
}
public void paint(Graphics g) {
super.paint(g);
System.out.println("paint in mypanel");
// erscheint nur am Anfang bzw. bei Minimieren/ Maximieren
}
}
class MyPanel2 extends Panel {
public MyPanel2() {
setSize(300, 300);
setBackground(Color.GREEN);
}
public Dimension getPreferredSize() {
return new Dimension(300, 300);
}
public void paint(Graphics g) {
super.paint(g);
//setSize(300, 300);
System.out.println("paint in mypanel2");
// erscheint nur am Anfang bzw. bei Minimieren/ Maximieren
}
}
}
--------------------
ein anderes Problem:
die setSize()-Aufrufe haben bei den Unterpanels keine Wirkung
gibt es eine andere Möglichkeit die Größe zu setzen außer getPreferredSize() zu überschreiben?
wenn ich übrigens in paint setSize(300, 300); aufrufe, dann passiert da auf einmal etwas..
(bei Interesse bitte ausprobieren, getPreferredSize() auskommentieren)