Filehost.ro - gazduire fisiere
Informatica
Programare - Software - Web Design
Nou pe simpatie:
lovely_pink pe Simpatie
Femeie
24 ani
Bucuresti
cauta Barbat
26 - 49 ani
InformaticaInregistrareLoginPozeNu sunteti logat. Lista Forumurilor Pe Tematici
Informatica / Despre limbajele de programare /

Ferestre

Pagini: 1  
#1
Admin
Administrator
Postari: 315
Suprafeţele de afişare ale unei componente grafice sunt extensii ale clasei Container. După cum am văzut, pentru implementarea unui applet s-au folosit suprafeţele de afişare Applet şi Panel. O aplicaţie intependentă are însă nevoie de propriile ferestre pe care să facă afişarea componentelor grafice. Pentru dezvoltarea aplicaţiilor care folosesc grafică se vor folosi clasele Window, Frame, Dialog.

Container
Panel - Window
Applet | Frame - Dialog

Clasa Window
Clasa Window este rar utilizată în mod direct. Ea permite crearea unor ferestre top-level care nu au chenar şi nici bară de meniuri. Pentru a crea ferestre mai complexe se utilizează clasele Frame şi Dialog.
Constructor
Window (Frame)
Constructs a new Window initialized to an invisible state.
Metode
addNotify () Creates the Window's peer.
dispose()
{terge o fereastră de care nu mai este nevoie. Trebuie apelată pentru a elibera resursele
getToolkit() Returns the toolkit of this frame.
getWarningString() Gets the warning string for this window.
pack()
Redimensionează fereastra specifică corespunzător dimensiunilor componentelor sale
show()
Afişează fereastra specificată. In mod implicit, o fereastră nou creată nu este vizibilă.
toBack()
Fereastra curentă este trimisă în spatele celorlate ferestre.
toFront()
Afişează fereastra specificată deasupra celorlalte ferestre.

Clasa Frame
Este o subclasă a clasei Window. Creează ferestre independente şi funcţionale, conţinând bare de meniuri.
Variabile
CROSSHAIR_CURSOR
DEFAULT_CURSOR
E_RESIZE_CURSOR
HAND_CURSOR
MOVE_CURSOR
NE_RESIZE_CURSOR
NW_RESIZE_CURSOR
N_RESIZE_CURSOR
SE_RESIZE_CURSOR
SW_RESIZE_CURSOR
S_RESIZE_CURSOR
TEXT_CURSOR
WAIT_CURSOR
W_RESIZE_CURSOR
Constructori
Frame () Constructs a new Frame that is initially invisible.
Frame(String) Constructs a new, initially invisible Frame with the specified title.

Metode
addNotify () Creates the Frame's peer.
dispose() Disposes of the Frame.
getCursorType() Return the cursor type
getIconImage() Returns the icon image for this Frame.
getMenuBar() Gets the menu bar for this Frame.
getTitle() Gets the title of the Frame.
isResizable() Returns true if the user can resize the Frame.
paramString() Returns the parameter String of this Frame.
remove(MenuComponent) Removes the specified menu bar from this Frame.
setCursor(int) Set the cursor image to a predefined cursor.
setIconImage(Image) Sets the image to display when this Frame is iconized.
setMenuBar(MenuBar)Sets the menubar for this Frame to the specified menubar.
setResizable(boolean) Sets the resizable flag.
setTitle(String) Sets the title for this Frame to the specified title.

Exemplu - crearea şi afişarea unei clase
import java.awt.*;
public class TestWindow {
public static void main(String args[]) {
Frame f = new Frame("Test Frame";
f.show();
}
}
Gestionarul implicit al clasei Window este BorderLayout. Din acest motiv, în momentul în care fereastra este creată dar nici o componentă grafică nu este pusă pe suprafaţa ei, suprafaţa de afişare a feretrei va fi nulă.
Acelaşi efect îl vom obţine dacă o redimenionăm şi apelăm apoi metoda pack() care determină dimeniunea suprafeţei de afişare în funcţie de componentele grafice afişate pe ea.
Se observă de asemenea că butoanele de maximizare, minimizare şi închidere ale ferestrei nu sunt funcţionale. Aceasta deoarece, similar celorlalte butoane, ele generează nişte evenimente care însă nu sunt recepţionate de obiectul care reprezintă fereastra deoarece acesta nu s-a înregistrat ca ascultător. Interceptarea evenimentelor se face prin implementarea interfeţei WindowListener şi prin adăugarea în lista ascultătorilor ferestrei chiar a obiectului care implementează fereastra.

import java.awt.*;
import java.awt.event.*;
class Cadru extends Frame implements WindowListener {
public Cadru(String titlu) {
super(titlu);
this.addWindowListener(this);
}
//metodele interfetei WindowListener
public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
}

public class TestWindow {
public static void main(String args[]) {
Cadru w_main = new Cadru("Test Frame";
Button cb_ok = new Button(“OK”);
w_main.add(cb_ok);
w_main.pack();
w_main.show();

}
}

Ferestre de dialog - Clasa Dialog
Toate mediile grafice oferă şi un tip special de ferestre destinate preluării datelor de la utilizator. Acestea se numesc ferestre de dialog sau casete de dialog şi sunt de două tipuri :
• modale : care blochează accesul la fereastra părinte - de exemplu, ferestre de introducere a unor date, de alegere a unui fişier în vederea deschideriii, de selectare a unei opţiuni, mesaje de avertizare, etc
• nemodale : care nu blochează fluxul de intrare către fereastra părinte - de exemplu, ferestrele de căutare a unui cuvânt într-un fişier.
Crearea unor astfel de ferestre se realizează prin intermediul clasei Dialog.
Clasa Dialog
Constructori
Dialog (Frame w_parent, boolean modal)
Dialog(Frame w_parent, String titlu, boolean modal)
Construieşte o casetă de dialog iniţial invizibilă, având ca părinte fereastra w_parent. Valoarea logică <modal> specifică dacă fereastra de dialog este modală sau nu.

Metode
addNotify () Creates the frame's peer.
getTitle() Gets the title of the Dialog.
isModal() Returns true if the Dialog is modal.
isResizable() Returns true if the user can resize the frame.
paramString() Returns the parameter String of this Dialog.
setResizable(boolean) Sets the resizable flag.
setTitle(String) Sets the title of the Dialog.

Exemplu
Dialog d = new Dialog(w_main, "Fereastra dialog", true);
Panel butoane = new Panel();
butoane.setLayout(new FlowLayout());
butoane.add(new Button("DA");
butoane.add(new Button("NU");
d.add("South", butoane);
d.add("Center", new Label("Sigur doriti sa faceti asta?");
d.setSize(new Dimension(200,100));
d.show();

Crearea de dialoguri este relativ simplă. Mai complicat este însă modul în care se implementează comunicarea între fereastra de dialog şi aplicaţie, pentru ca aceasta din urmă să poată folosi datele introduse (sau opţiunea specificată în caseta de dialog. Există două abordări generale :
• obiectul care reprezintă dialogul poate să capteze evenimentele de la butoanele ferestrei şi de la controalele de pe suprafaţa sa şi să să seteze valorile unor parametri ai aplicaţiei în momentul în care dialogul este încheiat sau
• obiectul care creează dialogul (fereastra părinte) să se înregistreze ca ascultător al evenimentelor de la butoanele care determină încheierea dialogului, iar obiectul dialog să ofere metode publice prin care datele introduse să fie preluate din exterior.

Obs: A doua metodă este mai uzuală.

Clasa FileDialog
Pachetul java.awt pune la dispoziţie şi un tip de fereastră de dialog folosit pentru încărcarea / salvarea fişierelor. Clasa FileDialog are un comportament comun dialogurilor de acest tip de pe majoritatea sistemelor, dar forma sa specifică în care va fi afişată este specifică platformei pe care rulează aplicaţia.
Variabile
LOAD The file load variable.
SAVE The file save variable.

Constructor
FileDialog (Frame, String) Creates a file dialog for loading a file.
FileDialog(Frame, String, int)Creates a file dialog with the specified title and mode.

Metode
addNotify () Creates the frame's peer.
getDirectory() Gets the directory of the Dialog.
getFile() Gets the file of the Dialog.
getFilenameFilter() Gets the filter.
getMode() Gets the mode of the file dialog.
paramString() Returns the parameter String of this file dialog.
setDirectory(String)
Set the directory of the Dialog to the specified directory.
setFile(String)
Sets the file for this dialog to the specified file.
setFilenameFilter(FilenameFilter)
Sets the filter for this dialog to the specified filter.

Exemple:
FileDialog f1 = new FileDialog(w_main, “Alegere fisier”,
FileDialog.LOAD); //dialog pentru incarcarea unui fisier
FileDialog f2 = new FileDialog(w_main, “Salvare fisier”,
FileDialog.SAVE); //dialog pentru salvarea unui fisier
f1.setDirectory(“./”); //directorul curent
f2.setDirectory(“/”); //directorul radacina
f1.setFile(“*.java”);
f2.setFile(”test.html”);//fisierul care apare initial

f1.setFileNameFilter(new JavaFilter());
class JavaFilter implements FilenameFilter {
public boolean accept(File dir, String numeFis) {
return (numeFis.endsWith(“.java”));
}
}

Obs: La crearea unui obiect FileDialog acesta nu este implicit vizibil. Dacă afişarea sa se face cu show() caseta de dialog va fi modală. Dacă afişarea se face cu setVisible(true) va fi nemodală. După selectarea unui fişier ea va fi făcută automat invizibilă.
--------------------------------------------------------------------------------


 
   
Pagini: 1  
Mergi la