Hallo,
ich habe ein BufferedImage, das von einer Steuerung erzeugt wird und ein BufferedImage, das von meiner Gui-Steuerung erzeugt wird. Jetzt werden die Bilder auf einem JPanel (ich habe es erweitert und Canvas genannt) übereinandergelegt.
Das repaintFlag wird immer dann gesetzt, wenn sich das offscreenImage geändert hat. Wenn ich nun aber das Fenster vergrößere oder das JPanel scrolle, dann passiert nichts.
Wie kann ich das denn retten? Ich dachte an einen PropertyChangeListener, nur ist das ein Interface. Die Klassen, die es implementieren, sagen mir alle nichts.
Kann mir jemand einen Tipp geben?
Grüße
Philipp
ich habe ein BufferedImage, das von einer Steuerung erzeugt wird und ein BufferedImage, das von meiner Gui-Steuerung erzeugt wird. Jetzt werden die Bilder auf einem JPanel (ich habe es erweitert und Canvas genannt) übereinandergelegt.
Code:
public void paintComponent(Graphics g) {
// super.paintComponent(g);
Graphics2D g2d;
g2d = (Graphics2D) g;
if (repaintFlag) {
repaintFlag = false;
g2d.setPaint(new Color(89, 63, 43));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
try {
Image oi = ctrl.getOffscreenImage();
// draw offscreen image
g2d.drawImage(oi, 0, 0, this);
} catch (Exception e) {
}
}
// draw active path
try {
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);
BufferedImage b = mainUi.getCurrentBufferedImage();
if (b != null)
g2d.drawImage(b, 0, 0, this);
}
catch(Exception e){
}
}
Das repaintFlag wird immer dann gesetzt, wenn sich das offscreenImage geändert hat. Wenn ich nun aber das Fenster vergrößere oder das JPanel scrolle, dann passiert nichts.
Wie kann ich das denn retten? Ich dachte an einen PropertyChangeListener, nur ist das ein Interface. Die Klassen, die es implementieren, sagen mir alle nichts.
Code:
canvas1.addPropertyvhangeListener(
//??
);
Kann mir jemand einen Tipp geben?
Grüße
Philipp