Diferență între revizuiri ale paginii „POO Lab Lucrarea 6”
De la WikiLabs
Jump to navigationJump to searchLinia 30: | Linia 30: | ||
** butonul pentru trimiterea mesajului - <code style="color: green">mSendMessageButton</code> | ** butonul pentru trimiterea mesajului - <code style="color: green">mSendMessageButton</code> | ||
** scroll pane-ul în care este plasată zona de afișare a mesajelor - <code style="color: green">mMessageAreaScrollPane</code> | ** scroll pane-ul în care este plasată zona de afișare a mesajelor - <code style="color: green">mMessageAreaScrollPane</code> | ||
+ | * Fereastra de afișare a mesajelor trebuie să fie read-only. | ||
* La apăsarea butonului X al ferestrei, aplicația trebuie să se oprească. | * 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). | * 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 cea a lui TextClient (să se poată folosi comenzile /q si /w). | * Comportamentul aplicației trebuie să fie identic cu cea a lui TextClient (să se poată folosi comenzile /q si /w). | ||
* Adăugați clasei ClientPeer o metodă setter pentru câmpul <code style="color: green">mUsername</code> care se va apela când se dă click pe butonul de schimbare a numelui. | * Adăugați clasei ClientPeer o metodă setter pentru câmpul <code style="color: green">mUsername</code> care se va apela când se dă click pe butonul de schimbare a numelui. |
Versiunea de la data 10 decembrie 2015 14:57
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
GuiClient
trebuie să ia ca argument un obiect de tipSocket
deja conectat și un nume inițial pentru expeditor (user) și să instanțieze un obiect de tipClientPeer
a cărui referință se salvează într-un câmp. - Metoda
main
dinGuiClient
trebuie să instanțieze un obiect de tipSocket
și un obiect de tipGuiClient
. - 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:- câmpul de editare pentru numele expeditorului -
mSenderTextField
- butonul de schimbare a numelui -
mChangeSenderButton
- fereastra 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
- câmpul de editare pentru numele expeditorului -
- 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 cea a lui TextClient (să se poată folosi comenzile /q si /w).
- Adăugați clasei ClientPeer o metodă setter pentru câmpul
mUsername
care se va apela când se dă click pe butonul de schimbare a numelui.