When performing some custom painting on a button\'s Graphics2D
object, I get the following results:
Why are you drawing so many rounded rectangles around the button?
As far as I can see, the correct way to do this would be to use setStroke()
API while drawing the kind of border you like.
it's because you draw if by drawing several 1px thick borders which misses some pixels in the arcs (draw it again with different colors and zoom in on the image to see it)
use the fill to set the color of the border and then draw the contrasting borders
Color fillcolor = Color.WHITE;
Color bordercolor = Color.BLACK;
if(getModel().isSelected())
{
fillcolor = Color.BLACK;
}
//fill the full rectangle
g2.setColor(fillcolor);
g2.fillRoundRect(0, 0, getWidth() - 1, getHeight() - 1, ARC_WIDTH, ARC_HEIGHT);
//draw contrasted borders
g2.setColor(bordercolor);
g2.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, ARC_WIDTH, ARC_HEIGHT);
g2.setColor(bordercolor);
g2.drawRoundRect(3, 3, getWidth() - 7, getHeight() - 7, ARC_WIDTH, ARC_HEIGHT);