Problem częściowo rozwiązałem - zamiast chować program (setVisible(false)), po prostu robię setBounds(par), odpowiednio od aktualnego DisplayMode, żeby program schował się poza granicami monitora ;], po uzależnieniu metod rysujących od aktualnego stanu programu (widoczny/niewidoczny) program (a raczej same rysowanie) i tak nie obciąża systemu.
Pojawia się jednak inny problem, podobny do tego wyżej... Tylko tym razem jest on jakby, bardziej 'losowy'. Raz włączę program i nic nie miga (w takiej sytuacji już do końca trwania tej sesji nic nie miga zazwyczaj, nieważne czy go ukrywam, przywracam, etc.), ale drugi, czy trzeci raz włączę (nie znalazłem na to żadnego wzoru :]) to już miga. Program włącza się zawsze tak samo (przynajmniej jeśli chodzi o ustawienia rysowania, podwójnego buforowania, etc.), nie rozumiem dlaczego czasem miga, a czasem nie.
Czy ktoś z Was spotkał się kiedyś z czymś takim?
EDIT: i jeszcze, przy okazji jedno pytanie: program co jakiś czas (także losowo - czasem tak, a czasem nie), w momencie pobierania kontekstu graficznego ze zmiennej np.Graphics g = zmienna.getDrawGraphics();
wyrzuca nullPointerException (czyli, jakby źle stworzył bufor: zmienna 'zmienna' wcześniej: createBufferStrategy(2); zmienna = getBufferStrategy();
). J/w czy ktoś z Was się z czymś takim spotkał, ew. jak to obejść.
EDIT2: z problemem w 'EDIT' sobie poradziłem, napiszę w jaki sposób, może komuś się przyda w przyszłości :). W metodzie rysującej, zamiast: Graphics g = zmienna.getDrawGraphics();
, wstrzelcie coś w ten deseń:
Graphics g=null;
try {g = zmienna.getDrawGraphics();} catch (Exception e1) {
int proba = 0;
while (g==null) {proba++;
createBufferStrategy(2);
zmienna = getBufferStrategy();
try {g = zmienna.getDrawGraphics();} catch (Exception e2) {
if (proba>10) System.exit(0); //aby wyeliminować zwiechę, jeżeli z jakiegoś powodu system naprawdę nie będzie mógł stworzyć bufora
}
}
}