I ran the code and it displays the numbers 1-12 in a circle, like a clock. Except: the circle is distorted - more like a pear lying on its side, and the numbers are rotated so 12 is upside-down.
So it's safe to conclude that the code basically works, but the exact rotations and translations (AffineTransforms) need some tuning.
Why are you making it so complicated? Also, what you really only need is translate and some rotate point using the angle from a center point in order to get the location of the draw string. Why do you use AffineTransform?
Here is a method I implemented that returns an integer array of point (x,y) given a distance from the center point and radiant (not degree).
Then when you call it, you need to compute the radiant a bit because by default the computation is counter-clock-wise and the starting point is from the far right of the center point.
for(int i=1; i <= 12; i++) {
// rotate the point
// -30 is from -1 (change direction to clock-wise)
// and 30 (each number is tilted 30 degrees)
// toRad is the multiplication to convert degree to radiant --> Math.PI/180
// Math.PI/2 is to tile the starting point from far right to top most
int[] pt = getPointXY(distance, (-30*i*toRad)+(Math.PI/2));
// translate the point here
// draw the string from the center point
// remmeber that the string location drawn from its bottom left
}