Obracanie obiektów w siatce (GUI, JAVA SWING)

Ok, więc próbuję wykonać ten samouczek:http://mathcs.slu.edu/~fritts/cse131/labs/lab9/index.html

Ale nie wiem, jak obracać przedmioty

synchronized void moveDown() {

}

Czy istnieje w tym celu jakaś zdefiniowana metoda, czy muszę zaimplementować własny kod? Myślałem o zmianie kształtu obiektu, ale to oznaczałoby, że za każdym razem muszę zmieniać mój obecny obiekt, co może być trochę skomplikowane w implementacji.

Metoda wywołująca 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();
        }
    }

Właśnie miałem dodać L1a, L1b, L1c itd. Czy nie ma innego sposobu?

    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}
    };

questionAnswers(0)

yourAnswerToTheQuestion