In case it's useful for anyone, here's my extension of LibGDX's ShapeRenderer to draw rectangles with rounded corners, using Josh Petrie's approach of drawing five rectangles and four arches.
I chose it over the two overlapping rectangles approach because it works well with transparency.
public class MyShapeRenderer extends ShapeRenderer{
/**
* Draws a rectangle with rounded corners of the given radius.
*/
public void roundedRect(float x, float y, float width, float height, float radius){
// Central rectangle
super.rect(x + radius, y + radius, width - 2*radius, height - 2*radius);
// Four side rectangles, in clockwise order
super.rect(x + radius, y, width - 2*radius, radius);
super.rect(x + width - radius, y + radius, radius, height - 2*radius);
super.rect(x + radius, y + height - radius, width - 2*radius, radius);
super.rect(x, y + radius, radius, height - 2*radius);
// Four arches, clockwise too
super.arc(x + radius, y + radius, radius, 180f, 90f);
super.arc(x + width - radius, y + radius, radius, 270f, 90f);
super.arc(x + width - radius, y + height - radius, radius, 0f, 90f);
super.arc(x + radius, y + height - radius, radius, 90f, 90f);
}
}