2012-03-30 22 views
3

Ich versuche, eine Reihe von Rechtecken auf der Glasscheibe zu malen, wie in here beschrieben. Die Sache ist, dass nur das letzte Element aus meiner Liste auf dem Fenster angezeigt wird.Wie ist es möglich, mehr als ein Rechteck auf einer Glasscheibe zu malen?

Kann jemand mehr als ein Rechteck auf dem gleichen Fenster malen?

Im Folgenden ist der Code verwendet wird:

paint-Methode in der Klasse des Fensterbereiches erstreckenden JComponent

protected void paintComponent(Graphics g) { 
     if (point != null) { 

      int value = this.getGradient(); 


      Color myColour = new Color(255, value, 0, 175); 
      g.setColor(myColour); 
      g.fillRect(point.x - 13, point.y - 15, this.width, this.height); 

     } 
    } 
+0

Für eine bessere Hilfe früher, buchen eine [SSCCE] (http://sscce.org/). –

+2

'Graphics g = container.getGraphics();' Das ist sofort suspekt, obwohl ich auf einen SSCCE warten werde, bevor ich weiter kommentiere. –

+0

+1, für diese Frage, ließ mich etwas Neues lernen :-) –

Antwort

3

Es gibt keine intrinsische Begrenzung Anstrich an der Glasscheibe, andere als die Abschneidegrenze. Versuchen Sie beispielsweise Folgendes in MyGlassPane.

glass pane demo

protected void paintComponent(Graphics g) { 
    if (point != null) { 
     g.setColor(Color.red); 
     g.drawRect(point.x, point.y, 60, 20); 
     g.setColor(Color.blue); 
     g.drawRect(point.x, point.y, 20, 60); 
    } 
} 
+0

Vielen Dank für Ihre Hilfe, ich habe nicht alle Rechtecke in dieser Methode gemalt, aber ich rief es mehrmals .. vielen Dank :) – ict1991

+1

Froh, dass Sie es sortiert haben. Wenn Sie 'paintComponent()' direkt aufrufen, sollten Sie stattdessen 'repaint()' aufrufen. – trashgod

+0

schön, denn bis zu diesem Moment war ich mir sicher, dass Glass/RootPane über Paint (API und noch ein Quatsch ..) nicht paintComponent :-), right, excelent – mKorbel