Diferență între revizuiri ale paginii „POO Lab Lucrarea 6”
De la WikiLabs
Jump to navigationJump to search| Linia 21: | Linia 21: | ||
* Folosind Java Swing, creați o interfață grafică, ca cea din figură, care să implementeze funcționalitatea clientului. Numiți clasa <code style="color: green">seriaf.poo.client.gui.GuiClient</code>. Este interzisă utilizarea unui ”Gui Creator” precum cel din Netbeans. | * Folosind Java Swing, creați o interfață grafică, ca cea din figură, care să implementeze funcționalitatea clientului. Numiți clasa <code style="color: green">seriaf.poo.client.gui.GuiClient</code>. Este interzisă utilizarea unui ”Gui Creator” precum cel din Netbeans. | ||
* Constructorul clasei <code style="color: green">GuiClient</code> trebuie să ia ca argument un obiect de tip <code style="color: green">Socket</code> deja conectat și un nume inițial pentru expeditor (user), să creeze interfața grafică și să instanțieze un obiect de tip <code style="color: green">ClientPeer</code> a cărui referință se salvează într-un câmp. | * Constructorul clasei <code style="color: green">GuiClient</code> trebuie să ia ca argument un obiect de tip <code style="color: green">Socket</code> deja conectat și un nume inițial pentru expeditor (user), să creeze interfața grafică și să instanțieze un obiect de tip <code style="color: green">ClientPeer</code> a cărui referință se salvează într-un câmp. | ||
| − | * Clasa <code style="color: green">GuiClient</code> trebuie să conțină și o metodă <code style="color: green">void display()</code> care să pornească thread-ul <code style="color: green">ClientPeer</code> și să afișeze Frame-ul creat. | + | * Clasa <code style="color: green">GuiClient</code> trebuie să conțină și o metodă <code style="color: green">void display()</code> care să pornească thread-ul <code style="color: green">ClientPeer</code> și să afișeze Frame-ul creat (neapărat în această ordine). |
* Metoda <code style="color: green">main</code> din <code style="color: green">GuiClient</code> trebuie să instanțieze un obiect de tip <code style="color: green">Socket</code> și un obiect de tip <code style="color: green">GuiClient</code>, apoi să apeleze metoda <code style="color: green">display</code>. Numele inițial, hostname-ul și port-ul la care se conectează clientul sunt date ca argument la execuția programului (vezi https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html). | * Metoda <code style="color: green">main</code> din <code style="color: green">GuiClient</code> trebuie să instanțieze un obiect de tip <code style="color: green">Socket</code> și un obiect de tip <code style="color: green">GuiClient</code>, apoi să apeleze metoda <code style="color: green">display</code>. Numele inițial, hostname-ul și port-ul la care se conectează clientul sunt date ca argument la execuția programului (vezi https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html). | ||
* Componentele grafice (butoane, textFields, etc.) trebuie să fie câmpuri în clasa <code style="color: green">GuiClient</code> și să aibă următoarele nume: | * Componentele grafice (butoane, textFields, etc.) trebuie să fie câmpuri în clasa <code style="color: green">GuiClient</code> și să aibă următoarele nume: | ||
Versiunea de la data 12 decembrie 2015 16:50
Noțiuni și cunoștințe necesare
- Paradigma Obiect-Orientare; Clase și obiecte
- Noțiuni despre Java
- Realizarea și execuția unui program Java
- Sintaxa limbajului Java; Structura lexicală a unui program
- Convenții de programare
- Noțiuni avansate de programare obiect-orientată
- Java Application Programming Interface (API)
- Stream-uri de Input/Output
- Tratarea excepțiilor
- Serializarea obiectelor
- Socket-uri de rețea
- Programare concurentă - fire de execuție (Threads)
- Graphical User Interface (GUI) - Java Swing și JavaFX
Cerințe
- Folosind Java Swing, creați o interfață grafică, ca cea din figură, care să implementeze funcționalitatea clientului. Numiți clasa
seriaf.poo.client.gui.GuiClient. Este interzisă utilizarea unui ”Gui Creator” precum cel din Netbeans. - Constructorul clasei
GuiClienttrebuie să ia ca argument un obiect de tipSocketdeja conectat și un nume inițial pentru expeditor (user), să creeze interfața grafică și să instanțieze un obiect de tipClientPeera cărui referință se salvează într-un câmp. - Clasa
GuiClienttrebuie să conțină și o metodăvoid display()care să pornească thread-ulClientPeerși să afișeze Frame-ul creat (neapărat în această ordine). - Metoda
maindinGuiClienttrebuie să instanțieze un obiect de tipSocketși un obiect de tipGuiClient, apoi să apeleze metodadisplay. Numele inițial, hostname-ul și port-ul la care se conectează clientul sunt date ca argument la execuția programului (vezi https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html). - Componentele grafice (butoane, textFields, etc.) trebuie să fie câmpuri în clasa
GuiClientși să aibă următoarele nume:- eticheta unde scrie "Name:" -
mSenderNameLabel - câmpul de editare pentru numele expeditorului -
mSenderTextField - butonul de schimbare a numelui -
mChangeSenderButton - zona de afișare a mesajelor -
mMessageDisplayTextArea - câmpul de editare pentru mesaj -
mMessageTextField - butonul pentru trimiterea mesajului -
mSendMessageButton - scroll pane-ul în care este plasată zona de afișare a mesajelor -
mMessageAreaScrollPane
- eticheta unde scrie "Name:" -
- Fereastra de afișare a mesajelor trebuie să fie read-only.
- La apăsarea butonului X al ferestrei, aplicația trebuie să se oprească.
- Fereastra principală trebuie să nu poată fi redimensionată (trebuie dimensionată programatic astfel încât componentele să fie ușor de observat și utilizat).
- Comportamentul aplicației trebuie să fie identic cu cel al lui
TextClient(să se poată folosi comenzile /q si /w). - Adăugați clasei
ClientPeero metodă setter pentru câmpulmUsernamecare se va apela când se dă click pe butonul de schimbare a numelui:void setUsername(String) - Adăugați clasei
ClientPeero metodăvoid setOutputPane(JTextArea). Această metodă trebuie apelată în constructorul claseiGuiClientcu zona în care se afișează mesajele ca argument.ClientPeerva scrie mesajele primite în acest TextField în loc să le afișeze în consolă.