Hi
Habe nen kleines Problem mit dem Überschreiben der Paint-Methode. Und zwar wird mein Hintergrundbild nicht wirklich
gezeichnet. Das bedeutet es wird zwar gezeichnet..doch mit dem Refreshen..da summt mein Monitor und es flackert EXTREM. Ich weiss, das Thema mit der Paint-Methode ist überall durchgekaut, doch ich finde keine Lösung woran es liegen kann. In anderen Anwendnungen klappt sowas auch ganz ohne Probs..doch meine nun spezielle Konstellation will irgendwie nicht. Wo ist da mein Fehler ?
Vorgeschichte:
Ich benutze NUR AWT, keine SWING-Komponente, da ich später mit OPENGL aufsetzen will.
1.) Ich habe nen einfaches Frame OHNE Layout-Manager.
2.) Dann Habe ich ein Panel (Kein JPanel) auch OHNE Layout-Manager. In diesem Panel überschreibe ich die
Paint-Methode und lass ein Hintergrundbild zeichnen. Das Überschreiben der PaintComponent-Methode funzt hier
irgendiwe überhaupt nicht. Nur Das Überschreiben der Paint-Methode klappt.
3.) Diesem Panel adde ich dann ne TextArea und adde dann das Panel zum Frame. also eigentlich ne simple
Konstellation.
4.) Es wird auch alles korrekt gezeichnet, NUR wenn ich dann zum Beispiel Text markiere im TextArea, dann summt der
Monitor und es flackert alles wie verrückt. (NICHT nur die Java-applikation..ganz windows samt Desktop)
Ich weiss, Paint-Methode überschreiben gehört verboten, aber PaintComponent klappt hier nicht.
Hier mal die relevanten Code-Auszüge:
DAS PANEL
AUSZÜGE AUS DEM FRAME
HIER DIE TEXTAREA
Ich habe schon rumgedebuggt und festgestellt, das es irgendwie mit den Layoutmanagern festhängen...Habe auch schon das ganze mit Swing ausprobiert..also JPanel benutzt etc. da kommt derselbe fehler...was habe ich dummes vergessen oder falsch gemacht ?
Gruss
Final
Habe nen kleines Problem mit dem Überschreiben der Paint-Methode. Und zwar wird mein Hintergrundbild nicht wirklich
gezeichnet. Das bedeutet es wird zwar gezeichnet..doch mit dem Refreshen..da summt mein Monitor und es flackert EXTREM. Ich weiss, das Thema mit der Paint-Methode ist überall durchgekaut, doch ich finde keine Lösung woran es liegen kann. In anderen Anwendnungen klappt sowas auch ganz ohne Probs..doch meine nun spezielle Konstellation will irgendwie nicht. Wo ist da mein Fehler ?
Vorgeschichte:
Ich benutze NUR AWT, keine SWING-Komponente, da ich später mit OPENGL aufsetzen will.
1.) Ich habe nen einfaches Frame OHNE Layout-Manager.
2.) Dann Habe ich ein Panel (Kein JPanel) auch OHNE Layout-Manager. In diesem Panel überschreibe ich die
Paint-Methode und lass ein Hintergrundbild zeichnen. Das Überschreiben der PaintComponent-Methode funzt hier
irgendiwe überhaupt nicht. Nur Das Überschreiben der Paint-Methode klappt.
3.) Diesem Panel adde ich dann ne TextArea und adde dann das Panel zum Frame. also eigentlich ne simple
Konstellation.
4.) Es wird auch alles korrekt gezeichnet, NUR wenn ich dann zum Beispiel Text markiere im TextArea, dann summt der
Monitor und es flackert alles wie verrückt. (NICHT nur die Java-applikation..ganz windows samt Desktop)
Ich weiss, Paint-Methode überschreiben gehört verboten, aber PaintComponent klappt hier nicht.
Hier mal die relevanten Code-Auszüge:
DAS PANEL
Code:
import java.awt.*;
class PropertyBackground extends Panel
{
private Image image;
public PropertyBackground(Image image, int width, int height)
{
super();
this.setBackground(Color.BLACK);
this.image = image;
this.setLayout(null);
this.setBounds(0,0,width,height);
}
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(image,0,0,image.getWidth(this), image.getHeight(this),this);
}
}
AUSZÜGE AUS DEM FRAME
Code:
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*; //Nur für ImageIcon
public class PropertyFrame extends Frame
{
private final int WIDTH = 512;
private final int HEIGHT = 400;
public PropertyFrame()
{
this.setLayout(null);
this.setSize(WIDTH, HEIGHT);
setBackground(Color.black);
centerWindow(this);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
PropertyConsole propertyCon = new PropertyConsole(WIDTH-100,HEIGHT-100);
PropertyBackground propertyBack = new PropertyBackground(new ImageIcon("c://Test.jpg").getImage(), WIDTH, HEIGHT);
propertyBack.add(propertyCon);
this.add(propertyBack);
this.setVisible(true);
HIER DIE TEXTAREA
Code:
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PropertyConsole extends TextArea
{
public final boolean LEVEL_OK = true;
public final boolean LEVEL_ERROR = false;
private final String LEVEL_OK_MESSAGE = " [OK]";
private final String LEVEL_ERROR_MESSAGE = " [FEHLER!]";
public PropertyConsole(int width, int height)
{
super("",100,25,TextArea.SCROLLBARS_VERTICAL_ONLY);
this.setBounds(16,32,width, height);
this.setForeground(Color.yellow);
this.setVisible(true);
this.setBackground(Color.black);
this.setEditable(false);
}
Ich habe schon rumgedebuggt und festgestellt, das es irgendwie mit den Layoutmanagern festhängen...Habe auch schon das ganze mit Swing ausprobiert..also JPanel benutzt etc. da kommt derselbe fehler...was habe ich dummes vergessen oder falsch gemacht ?
Gruss
Final