G
Guest
Gast
Hallo allerseits,
habe gerade mit SWT Programmierung angefangen, und bin gerade dabei mit ner Zeichenfläche (Canvas) zu arbeiten.
Mein Problem klingt ziemlich banal, aber ich hab momentan irgendwie ein Brett vorm Kopf - wahrscheinlich, weil ich noch nicht ganz nachvollzogen habe, wie das painting in SWT gehandhabt wird.
Aus AWT/Swing war ich gewohnt, dass automatisch die paint(Graphics g) Methode aufgerufen wurde. Die konnte ich mit nem repaint() auch im Nachhinein (zur Laufzeit) erneut aufrufen (bei veränderten Parametern (in dem Fall dann z.B. Attribute) wurde dann z.B. was anderes gezeichnet)
Nur bei SWT wird das ganze ja über das PaintEvent gesteuert.
Bisher habe ich meinen Code daher nach folgendem Schema aufgebaut:
Wenn ich aus ner anderen Klasse nun ein Graph Objekt erstelle, wird automatisch die paintControl() Methode aufgerufen, die dann wiederum das PaintEvent an die paint() weiterleitet.
Nur was mach ich jetzt, wenn ich zur Laufzeit noch was dazu zeichnen will? Denn in SWT gibts ja offensichtlich kein repaint().
Konkrete Frage:
Angenommen, meine GUI wird jetzt geladen und erstellt per "new Graph(parent, style)"-Aufruf eine Zeichenfläche mit dem oben genannten "Hello World"-String an Position 50,50. Nun habe ich in der GUI noch nen Button. Wenn auf den Button geklickt wird, soll nun zusätzlich zu dem String noch mal z.B. eine Linie eingezeichnet werden. Was muss ich dazu nun in die Methode meines Actionlisteners (der auf den Button-Klick reagiert) reinschreiben?
Ich steh grad voll auf dem Schlauch, weil ich nicht weiß, wie ich jetzt noch mal an ein PaintEvent komme, um daraus einen neuen GC zu bekommen, mit dem ich erneut was zeichnen kann...
habe gerade mit SWT Programmierung angefangen, und bin gerade dabei mit ner Zeichenfläche (Canvas) zu arbeiten.
Mein Problem klingt ziemlich banal, aber ich hab momentan irgendwie ein Brett vorm Kopf - wahrscheinlich, weil ich noch nicht ganz nachvollzogen habe, wie das painting in SWT gehandhabt wird.
Aus AWT/Swing war ich gewohnt, dass automatisch die paint(Graphics g) Methode aufgerufen wurde. Die konnte ich mit nem repaint() auch im Nachhinein (zur Laufzeit) erneut aufrufen (bei veränderten Parametern (in dem Fall dann z.B. Attribute) wurde dann z.B. was anderes gezeichnet)
Nur bei SWT wird das ganze ja über das PaintEvent gesteuert.
Bisher habe ich meinen Code daher nach folgendem Schema aufgebaut:
Code:
public class Graph extends Canvas implements PaintListener{
public Graph(Composite parent, int style){
super(parent, style);
addPaintListener(this);
}
private void paint(PaintEvent e) {
GC gc = e.gc;
gc.drawString("Hello World", 50,50);
gc.dispose();
}
public void paintControl(PaintEvent e) {
paint(e);
}
}
Wenn ich aus ner anderen Klasse nun ein Graph Objekt erstelle, wird automatisch die paintControl() Methode aufgerufen, die dann wiederum das PaintEvent an die paint() weiterleitet.
Nur was mach ich jetzt, wenn ich zur Laufzeit noch was dazu zeichnen will? Denn in SWT gibts ja offensichtlich kein repaint().
Konkrete Frage:
Angenommen, meine GUI wird jetzt geladen und erstellt per "new Graph(parent, style)"-Aufruf eine Zeichenfläche mit dem oben genannten "Hello World"-String an Position 50,50. Nun habe ich in der GUI noch nen Button. Wenn auf den Button geklickt wird, soll nun zusätzlich zu dem String noch mal z.B. eine Linie eingezeichnet werden. Was muss ich dazu nun in die Methode meines Actionlisteners (der auf den Button-Klick reagiert) reinschreiben?
Ich steh grad voll auf dem Schlauch, weil ich nicht weiß, wie ich jetzt noch mal an ein PaintEvent komme, um daraus einen neuen GC zu bekommen, mit dem ich erneut was zeichnen kann...