Előbb-utóbb minden kezdő fejlesztő szembekerül a problémával, amely a következő két tényből fakad.

  1. A JFrame nem használható modális párbeszédablakként
  2. A JDialog-ot nem lehet átméretezni automatikusan teljes képernyőre

Okok

A JDialog hiányosságának oka számomra nem teljesen világos, a Java kézikönyv kifejti, hogy a JVM az aktuális operációs rendszer API-ját használja az ablakok megjelenítésére. A JDialog a szülő JFrame-hez kötődik, ezért a modalitás adott. Viszont ha két JFrame-et hozol létre, az operációs rendszer két független konténert biztosít, amelyek között nincs a JFrame és a JDialog közötti kapcsolathoz hasonló kötődés, ezért a JFrame-ek modalitása nem oldható meg korrekt és biztonságos módon (csak veszélyes trükkökkel).

Megoldás

A megoldás a következő:

  • A párbeszédpaneleket JPanel-ből származtassad, így tetszőlegesen burkolhatók JDialog-ba vagy JFrame-be, a szükségtől függően.
  • Ha modalitásra van szükséged, mindig JDialog-ot használdd. A JDialog teljes képernyőre méretezését a következő módon teheted meg:
setBounds(GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds());
  • Ha nincs szükség modalitásra, mindig használj JFarme-et, amely rendelkezik az automatikus és kényelmes átméretezésekhez szükséges funkcionalitással.

Miért ne használj olcsó trükköket?

  • Mert az olcsó trükkök később sokba kerülhetnek.
  • A Java API hackelése a következő mellékhatásokat okozhatja:
    • A funkcionalitás nem lesz platformfüggetlen, mert különböző platformokhoz készült virtuális gépekben ugyanazok a funkciók másképp vannak implementálva
    • A funkcionalitás időben nem lesz stabil. A Java keretrendszert rendszeresen, néhány évente újratervezik és újraírják, ezért nem garantált, hogy az API mélyebb rétegeinek tökéletlenségeit kihasználó kód a következő Java verzióval is ugyanúgy fog működni.

 

Kategória: Java

Támogasd munkánkat!

Blogunkat nonprofit módon, teljesen ingyen készítjük, már 7 éve. Ingyenes szoftvereket biztosítunk több száz cég számára, és természetvédelmi tevékenységet is végzünk. Ezekből semmilyen bevételünk nem származik. De mi is csak pénzből tudjuk magunkat fenntartani. Azért gyűjtünk, hogy tovább tudjuk folytatni hasznos értékteremtő munkánkat, ezért kérünk, ha van 1000 - 5000 Ft-od, amit fel tudsz ajánlani számunkra, támogass minket!

Cégünk: Völgyerdő Nonprofit Kft.

Számlaszámunk: 11600006-00000000-84522043 (Erste Bank)

 

Látogatók

131792
Ma12
Tegnap31
Ezen a héten265
Ebben a hónapban1117
Összesen131792
Statistik created: 2019-08-25T00:14:50+00:00
Bejelentkezett felhasználók 0
Regisztrált felhasználók 1
Ma regisztráltak 0