Canvas im SWT Zurücksetzen

moonyforce

Grünschnabel
Hallo zusammen,
bin ganz neu hier, das ist mein aller erster Beitrag . . .

Ich möchte ein Diagramm in SWT zeichnen, welches alle ca. 2 sekunden aktualisiert wird (mit neuen Daten). Dazu soll dann jeweils das Diagramm neu geladen werden.

Ich habe dieses Diagramm in einer Canvas gezeichnet, und nun komme ich nicht weiter, da ich das Diagramm nicht löschen bzw. zurücksetzen kann.

Ich möchte das immer wenn diese Methode ausgeführt wird das Diagramm neu gezeichnet wird (canvas.redraw() jedoch zeichnet einfach darüber ohne die vorherige Zeichnung zu löschen).

Gibt es da eine Möglichkeit? Falls nicht alles verständlich ist, könnt ihr mich ja gerne Fragen:

Hier noch den Code:

Code:
public class LineChart {
   private Canvas canvas;

   private GC gc;

   public void initialize(final Composite parent) {
      canvas = new Canvas(parent, SWT.FLAT);
      canvas.setBounds(0, 265, 730, 350);
                paintChart();
}
/*
* In dieser Methode wird das Diagramm gezeichnet
*/
public void paintChart() {
       int counter=0;
       int time=0;
       canvas.addPaintListener(new PaintListener() {
         public void paintControl(PaintEvent e) {
            gc = e.gc;
            gc.drawRectangle(20, 15, 700, 300);
   
            for (int i = 0; i <= 10; i++) {
               print = time + "ms";
               gc.drawText(print, 5, 310- counter);
               time += 50;
               counter += 30;
            }
         }
      });
}

/*
* Hier sollen dann die linien dazugezeichnet werden
*/
public void setContent() {
canvas.redraw();                     
//  ------------->>>  Hier sollte die Canvas gelöscht werden  <<< ----------------

canvas.addPaintListener(new PaintListener() {
         public void paintControl(PaintEvent e) {
            gc = e.gc;
            gc.drawRectangle(20, 15, 700, 300);
   
            for (int i = 0; i <= 10; i++) {
               print = time + "ms";
               gc.drawText(print, 5, 310- counter);
               time += 50;
               counter += 30;
            }
                               
                                gc.drawLine(10,10,400,200);
         }
      });

}

danke schon im voraus.
greetz
 
Mal doch einfach das gesamte Diagramm samt Hintergrund neu. Dann dürfte das alte Diagramm doch übermalt werden, oder?
 
Zurück