2009-04-20 4 views
6

Próbujemy zapisać stan aplikacji przy wyjściu i przywrócić ją podczas uruchamiania. Częścią stanu jest względna kolejność Z wszystkich ramek JFrame.Czy istnieje huśtawka Swing do zapytania lub ustawienie kolejności Z okna?

Niestety, Swing nie zapewnia żadnej metody uczenia się ani ustawiania kolejności Z okna (nawet w stosunku do innych okien w tej samej maszynie wirtualnej).

Zajmujemy się ustawianiem kolejności Z przez wywoływanie do Front() we wszystkich oknach w kolejnej kolejności. Ale zapytanie o kolejność Z pozostaje nierozwiązane. (Dodawanie detektorów skupienia nie działa zawsze, na przykład, gdy używa się akcji Windows "Kaskada" w grupie okien.)

Jakieś pomysły?

+0

duplikat http://stackoverflow.com/questions/624885/how-to-get-the-z-order-of-jinternalframes-in-a-desktoppane? – dfa

+1

Nie, nie, nie mówię o JInternalFrames – sereda

Odpowiedz

5

Nie z żadną ziarnistością.

Tak jak mówisz, możesz zadzwonić doFront() i doBack(), a możesz poprosić okno, aby "pozostało na górze", ale to prawie wszystko.

Inną opcją jest posiadanie ramki z wewnętrznymi ramkami i użycie setComponentZOrder() (działa to tylko dla wewnętrznych komponentów - musisz wywołać to na kontenerze).

Uważam, że jednym z powodów, dla których nie było priorytetem w Swingu, jest to, że obsługa zamawiania Z jest zależna od platformy. (Ale hej, co nie jest ...)

-1

Możesz użyć setComponentZOrder (Component c, int layer) i getComponentZOrder (Component c) z klasy Container. Dostępne są porady techniczne JDC na ten temat: http://72.5.124.55/developer/JDCTechTips/2005/tt0118.html

+2

tylko po to, by oznaczyć dla przyszłych widzów tego wątku: ta metoda dotyczy zawartości JFrame, a nie samej JFrame w kontekście innych okien w systemie. –