Jest to teoretycznie do zrobienia i są programy, które tak działają, ale jest to trudne i wymaga mnóstwa testów. Taki program może okazać się nieprzenośny nie tylko między różnymi systemami (co jest prawie pewne), ale w skrajnym wypadku nawet między różnymi wersjami Windows w ramach tego samego systemu. Chodzi o to, że od dekady w trybach graficznych nie ma żadnego standardu. Sterownik graficzny podaje systemowi listę obsługiwanych rozdzielczości i planów. Listę tę ma system i może ona okazać się częściowo niedostępna dla aplikacji trzecich. Aplikacje pełnoekranowe negocjują plan graficzny w jakim będą pracować uzgadniając te obsługiwane przez siebie z trybami podawanymi w odpowiedzi przez system. Obca aplikacja nie ma wglądu do tej komunikacji, więc może się zdarzyć, że aplikacja pełnoekranowa wynegocjuje z systemem (a de facto z kartą graficzną) plan, który będzie nieznany i niezrozumiały dla Twojej aplikacji.
Dlatego ta Twoja musiałaby mieć jak największą bazę rozpoznawanych przez siebie trybów graficznych i każdy powinna obsłużyć. Część gier wypełnia bufor grafiki bez pośrednictwa systemu (nawet bibliotek DirectX, choć to coraz rzadsze), posługują się przełączaniem buforów graficznych umiejscowionych w swojej prywatnej pamięci, potrójnym buforowaniem i różnymi strategiami dotyczącymi synchronizacji tych buforów z wyświetlaniem ich na monitorze. Twoja aplikacja musiałaby to wszystko rozpoznać, dostosować się i jeszcze uzyskać dostęp do pamięci, do której bronić dostępu może sam procesor (np. inny ring zabezpieczeń).
Jest to zadanie trudniejsze niż Ci się wydaje. Jeżeli sądzisz, że uda Ci się mazać po ekranie w grze, którego zrzutu nie potrafią zrobić (a bywają takie gry) nawet najlepsze służące do tego aplikacje (a one tylko czytają pamięć), to dość wysoko mierzysz.
Tak czy inaczej nie jest to zadanie do zrobienia w całości w Javie.