Rotar objetos en una cuadrícula (GUI, JAVA SWING)

Ok, entonces estoy tratando de hacer este tutorial:http://mathcs.slu.edu/~fritts/cse131/labs/lab9/index.html

Pero no sé cómo rotar objetos.

synchronized void moveDown() {

}

¿Hay algún método definido para eso o tengo que implementar mi propio código? Pensé en cambiar la forma del objeto, pero eso implicaría que tengo que cambiar mi objeto actual cada vez, lo que podría ser un poco complicado de implementar.

El método que llama a moveDown:

public void keyPressed(KeyEvent event) {
        int key = event.getKeyCode();
        switch (key) {
        case KeyEvent.VK_UP:  // up arrow
        case KeyEvent.VK_KP_UP:
            currentPiece.rotateCounterclockwise();
            break;
        case KeyEvent.VK_DOWN:  // down arrow
        case KeyEvent.VK_KP_DOWN:
            currentPiece.rotateClockwise();
            break;
        case KeyEvent.VK_LEFT:  // left arrow
        case KeyEvent.VK_KP_LEFT:
            currentPiece.moveLeft();
            break;
        case KeyEvent.VK_RIGHT:  // right arrow
        case KeyEvent.VK_KP_RIGHT:
            currentPiece.moveRight();
            break;
        case KeyEvent.VK_SPACE:  //  space bar
            currentPiece.drop();
        }
    }

Estaba a punto de añadir L1a, L1b, L1c, etc. ¿No hay otra manera?

    public static final int[][] L1 =
    {{1,1},
     {0,1},
     {0,1}
    };

public static final int[][] L2 =
    {{0,1},
     {0,1},
     {1,1}
    };      

public static final int[][] T =
    {{0,1},
     {1,1},
     {0,1}
    };

public static final int[][] BOX =
    {{1,1},
     {1,1}
    };

public static final int[][] BAR =
    {{1,1,1,1}
    };      

public static final int[][] STEP1 =
    {{1,0},
     {1,1},
     {0,1}
    };  

public static final int[][] STEP2 =
    {{0,1},
     {1,1},
     {1,0}
    };