}
// draw X-Axis label right below the Arrow ?!
g.setColor(Color.black);
TextLayout layoutX = new TextLayout(getXAxisUnit(), getFont(),
new FontRenderContext(null, true, false));
layoutX.draw(g, (float)x.getX2() + (float)ARROWLENGTH / 3, (float)x.getY2() + (float)layoutX.getBounds().getHeight() + 5);
// draw Y-Axis Arrow
if(shouldDrawArrows) {
g.drawLine((int)y.getX1(), (int)y.getY1(), (int)y.getX1(), (int)y.getY1() - ARROWLENGTH);
g.fillPolygon(new int[] {(int)(y.getX1() - 3),
(int)(y.getX1() + 3),
(int)(y.getX1())},
new int[] {(int)(y.getY1() - ARROWLENGTH / 3.0),
(int)(y.getY1() - ARROWLENGTH / 3.0),
(int)y.getY1() - ARROWLENGTH},
3);
}
// draw Y-Axis label right below the Arrow ?!
g.setColor(Color.black);
TextLayout layoutY = new TextLayout(getYAxisUnit(), getFont(),
new FontRenderContext(null, true, false));
layoutY.draw(g, (float)y.getX1()-6-(float)layoutY.getBounds().getWidth(),
(float)y.getY1() - layoutX.getDescent() - 3);
if(getSecondYAxis() != null) {
Line2D y2 = c.getSecondYAxisLine2D();