Swing: Rechtecke zeichnen
java.awt.Graphics#drawRect( int, int, int, int )
Die Operation "java.awt.Graphics#drawRect(int,int,int,int)" erwartet als erstes und zweites Argument die x- und y-Koordinate eines zu zeichnenden Rechteckrahmens. (Damit ist die Koordinate des linken oberen Pixels des zu zeichnenden Rechteckrahmens gemeint.) Als drittes und viertes Argumen erwartet sie die Differenz der x-Koordinaten des rechten und linken Randes bzw. die Differenz der y-Koordinaten des unteren und des oberen Randes des zu zeichnenden Rechteckrahmens. Diese Differenzen sind Eins weniger als die Breite bzw. die Höhe: Wenn ein Rechteck beispielsweise eine sichtbare Breite von genau einem Pixel hat, dann ist der Unterschied des rechten Randes zum linken Rand gleich Null, weil sie beide in derselben Pixelspalte sind. Bei einem Rechteckrahmen mit zwei Pixeln Breite wäre die Differenz beispielsweise Eins.
Graphics#drawRect(4,1,0,3)
0123456789
0::::::::::
1::::#::::: Differenz = 4 - 4 = 0
2::::#::::: Breite = 1
3::::#:::::
4::::#:::::
5::::::::::Graphics#drawRect(4,1,1,3)
0123456789
0::::::::::
1::::##:::: Differenz = 5 - 4 = 1
2::::##:::: Breite = 2
3::::##::::
4::::##::::
5::::::::::Graphics#drawRect( 0, 0, 4, 3)
0123456789
0#####::::: minimale x-Koordinate = 0
1#:::#::::: maximale x-Koordinate = 4
2#:::#::::: Breite = 5
3#####:::::
4::::::::::
5::::::::::
In der Java -Dokumentation von wird angegeben, die beiden letzten Parameter dieser Methode seinen die Breite und die Höhe des zu zeichnenden Rechtecks. (Dies wird zwar im Text dann richtig erklärt, aber als Merkwörter für die Parameter wird trotzdem der Bezeichner "width" und der Bezeichner "height" verwendet.) Diese Information trifft aber so nicht zu, denn an anderer Stelle (z.B. in Zusammenhang mit der Methode "getWidth") verwendet die Dokumentation die Begriffe Breite und die Höhe in richtiger Weise (für die Anzahl waagerechter bzw. senkrechter Pixel), so daß man nicht allgemein sagen kann, diese Wörter würden in der Dokumentation für die Differenz zwischen Maximum und Minimum stehen. Insofern ist die Dokumentation des Herstellers hier nicht konsistent.