kunne laves simpelt ved at tilføje en boolean som fx "boolean allowClosing = true"... når du så skifter til et panel hvor man ikke må kunne lukke frame sætter du boolean'en til false... når du skifter tilbage til true... og din : { ((Frame)e.getSource()).dispose(); System.exit(0); } laver du om til: { if (allowClosing) { ((Frame)e.getSource()).dispose(); System.exit(0); } }
Men det er måske ikke nogen "pæn" løsning... og jeg ved ikke lige om der findes en måde at "disable" krydset på istedet.. kan ikke lige se det på Frame i hvert fald..
Når jeg starter mit program, kalder jeg min frame, og det vil sige den bliver kun kaldt EEN gang i programmets levetid. Jeg skal bruge en eller anden dynamisk måde at tilføje eller fjerne window listener.
Til at udskifte panel i mit pr. bruger jeg en metode som hedder setCurrentPanel(Panel panel).
hvis setCurrentPanel ligger på din frame, så kunne du evt. smide en boolean med den... fx setCurrentPanel(Panel panel, boolean disableClosing) herudover tilføjer du en boolean på din frame som fx. boolean canBeClosed = true; i din setCurrentPanel laver du noget ala: if (disableClosing && canBeClosed) { frame.removeWindowListener(listener);//du bliver nødt til at lave din windowlistener som en konkret klasse istedet for den anonyme innerclass, ellers kan den ikke fjernes canBeClosed = false) } else if (!disableClosing && !canBeClosed) { addWindowListener(listener); } Hvis du skal have hjælp til at lave den anonyme innerclass konkret så sig til...
Du kan evt. smide terminatorklassen i samme java fil som din frame, bare du ikke laver den public class og smider den uden for framens class scope (altså den sidste "}" )
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.