În JFC/Swing, ferestrele de dialog se realizează folosind
clasa javax.swing.JDialog. Instanțele acestei clase se comportă
asemanator cu cele ale clasei JFrame, permițând adăugarea oricăror
componente. La fel ca la JFrame, aceste componente nu se adaugă direct
la fereastră, ci la panoul contentPane conținut în aceasta și
obținut prin metoda public Container getContentPane().
Fereastra de dialog poate avea ca "proprietar" (owner) o instanță a claselor java.awt.Frame, javax.swing.JFrame, java.awt.Dialog sau javax.swing.JDialog. Proprietarul se transmite ca argument al constructorului ferestrei de dialog. Se permite ca, în loc de proprietar, să se pună argumentul null, în care caz se atribuie un proprietar implicit. Pentru afișarea pe ecran a ferestrei de dialog se invocă metoda public void show(), iar pentru ascunderea ei se invocă metoda public void hide(). În fine, pentru a elimina fereastra de dialog, eliberând toate resursele pe care le folosește, se invocă metoda public void dispose(). Aceste trei metode sunt moștenite de JDialog de la superclasa java.awt.Dialog. Când fereastra de dialog este deschisă, ea trece în prim plan sau în plan secund împreună cu proprietarul ei. |
Ferestrele de dialog pot fi modale sau nemodale. Când este afișată pe ecran o fereastră modală, toate celelalte ferestre existente pe ecran sunt blocate (nu se poate acționa asupra lor), până când se încheie lucrul cu fereastra de dialog modală respectivă.
Clasele Dialog și JDialog sunt prezentate ceva mai detaliat în indexul de clase.
Clasa JDialog este folosită pentru realizarea unor ferestre de
dialog configurate de programator după dorința sa. În multe situații,
este însă suficient să se folosească ferestre de dialog standard,
preconfigurate, ceeace ușurează programarea. În acest scop, în
JFC/Swing a fost creată clasa javax.swing.JOptionPane care
este prezentată în indexul de clase.
Clasa JOptionPane oferă metode statice pentru a crea patru
tipuri de ferestre de dialog: - pentru dialog de mesaj (showMessageDialog) - fereastra conține o informație și un buton OK care se apasă pentru a închide fereastra; - pentru dialog de confirmare (showConfirmDialog) - în fereastra se afișează un mesaj (o întrebare) și trei butoane de confirmare: Yes/No/Cancel; la apăsarea unuia dintre ele, metoda întoarce valoarea corespunzatoare și fereastra de dialog dispare; - pentru dialog de intrare (showInputDialog) - fereastra conține un mesaj, un câmp de text și două butoane: OK și Cancel. Utilizatorul introduce în câmpul de text o valoare (un șir de caractere sau un număr) și apasa tasta <Enter> sau actioneaza cu mouse-ul butonul OK. În ambele cazuri fereastra de dialog dispare, iar metoda întoarce șirul introdus în câmpul de text. Dacă se apasă butonul Cancel, fereastra de dialog dispare, iar metoda întoarce null. - pentru dialog de opțiune (showOptionDialog), care întrunește caracteristicile celor trei tipuri de mai sus. Pentru fiecare din aceste patru tipuri de ferestre de dialog există mai multe metode cu numele corespunzător, care diferă între ele prin lista de argumente. Pentru detalii trimitem la documentația Java API. |
Exemplu În fișierul Dialog1.java este dat un exemplu de aplicație, în care se testează diferitele tipuri de ferestre de dialog create cu metodele statice ale clasei javax.swing.JOptionPane. Fereastra principală a aplicației conține un buton cu inscripția "Introducere text" și o arie de text (JTextArea). Când este acționat butonul, apare o fereastră de dialog de intrare, cu mesajul "Introduceți un text". Dacă se acționeaza butonul OK fără să fi introdus nimic în câmpul de text, apare o noua fereastră de dialog, care conține mesajul de avertisment "Nu se permite un șir vid". Dacă se introduce un șir în câmpul de text și se acționeaza butonul OK sau tasta Enter, apare o nouă fereastră de dialog, care cere confirmarea că acest text trebuie introdus în aria de text. Dacă se răspunde prin acționarea butonului Yes, se face adăugarea, iar dacă se răspunde prin apăsarea butonului No sau Cancel, fereastra de dialog dispare fără să se facă adăugarea textului. Întrucât întregul dialog este declanșat, în cazul de față,
prin acționarea butonului "Introducere text", programul prin care se
realizează dialogul a fost plasat în metoda actionPerformed a
clasei IntroducereText care ascultă evenimentele de acțiune generate de
butonul menționat.
Cu privire la metoda actionPerformed din clasa IntroducereText
remarcăm următoarele: În rest, considerăm că procedura de dialog rezultă clar din textul metodei. |
Pentru aprofundarea utilizării ferestrelor de dialog, recomandăm consultarea capitolului How to Make Dialogs din Java Tutorial. |