D
Drea
Gast
Hallo Leute,
ich habe folgendes Problem:
Ich möchte ein Bild in einem Canvas auf einem JFrame anzeigen lassen. Hier der Code (auszugsweise):
Das Problem: Die Sache funktioniert nur, wenn nur JFrame neugezeichnet werden muss. Sobald das Canvas neugezeichnet werden muss (z.B. beim Skalieren der Komponente oder auch beim Starten der Anwendung) wird mein Bild wieder "überzeichnet". Kann ich es irgendwie erreichen, dass erst die Komponente neugezeichnet wird und dann das JFrame?
Ich weiß, dass ich die paint-Methode des Canvas überschreiben könnte und somit meine eigene Komponente anlegen könnte, aber da kommen noch einige Funktionen dazu und ich wollte es erstmal so versuchen.
LG ... Drea
ich habe folgendes Problem:
Ich möchte ein Bild in einem Canvas auf einem JFrame anzeigen lassen. Hier der Code (auszugsweise):
Code:
public class NewJFrame extends javax.swing.JFrame {
private Image image;
/** Konstruktor */
public NewJFrame() {
initComponents();
//Bilddatei laden
java.net.URL url = getClass().getResource("test.jpg");
image = Toolkit.getDefaultToolkit().createImage( url);
try{
MediaTracker mt = new MediaTracker( this );
mt.addImage( image, 0 );
mt.waitForAll();
}catch( Exception e ) {
e.printStackTrace();
}
}
//Neuzeichnen von JFrame
public void paint( Graphics g )
{
if ( image != null )
{
//Grafikkontext des Canvas holen
Graphics gCanv = canvas1.getGraphics();
//Bild auf Canvas zeichnen
gCanv.drawImage( image, 0, 0, this );
}
super.paint(g);
}
Das Problem: Die Sache funktioniert nur, wenn nur JFrame neugezeichnet werden muss. Sobald das Canvas neugezeichnet werden muss (z.B. beim Skalieren der Komponente oder auch beim Starten der Anwendung) wird mein Bild wieder "überzeichnet". Kann ich es irgendwie erreichen, dass erst die Komponente neugezeichnet wird und dann das JFrame?
Ich weiß, dass ich die paint-Methode des Canvas überschreiben könnte und somit meine eigene Komponente anlegen könnte, aber da kommen noch einige Funktionen dazu und ich wollte es erstmal so versuchen.
LG ... Drea