Warto wiedzieć, że są aż 3 standardowe biblioteki GUI w języku Java:
- Java AWT (Abstract Window Toolkit) - najstarszy, dość rozbudowany, nie rozwijany projekt na którym bazują dwa nowsze. Największą wadą jest duża zależność od platformy (dużo kodu natywnego), co psuje słowa Sun Microsystems: "Write once, run evrywhere".
- Java Swing, o wiele lepszy sposób na GUI, trochę nowsze, mniej zależne od platformy, nie jest również rozwijane. Szybciej osiągniesz ten sam efekt co w Java AWT, jednak musisz się sporo napisać. Przy okazji, ani Swing ani AWT nie rozwiązują problemu mieszania warstwy logiki i prezentacji.
- Java FX - najnowsza biblioteka, dobrze rozwijana, posiada możliwość rozdzielenia warstwy prezentacji od warstwy widoku z użyciem języka FXML (tak naprawdę to xml ze zdefiniowanymi znacznikami), możliwość tworzenia GUI przez Drag & Drop z użyciem Scene Builder. Każda nowa aplikacja powinna tego używać jednak wiele z starych aplikacji używa Swinga. Nie można się jednak martwić, ponieważ wewnątrz aplikacji Swing można wyświetlać coś napisane z użyciem lepszej i nowszej technologi Java FX. Warto również wspomnieć o stylach w CSS (właściwości są lekko zmienione, używamy prefiksu -fx).
Jeśli chodzi o JavaFX polecam w języku angielskim: https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBzfXLWLSYVy8EbTdpGbUIG.
Jeśli chodzi o Swing jacek96 podał poradnik. Warto również pamiętać by zacząć od zwykłych aplikacji okienkowych. Potem możesz robić gry. W przypadku gier raczej poszukałbym dobrej biblioteki / silnika lub zmieniłbym język (chyba, że chodzi o gry na androida).