POO Lab Lucrarea 6

De la WikiLabs
Jump to navigationJump to search

Noțiuni și cunoștințe necesare

Cerințe

Interfața grafică pentru client
  • 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 tip Socket deja conectat și un nume inițial pentru expeditor (user) și să instanțieze un obiect de tip ClientPeer a cărui referință se salvează într-un câmp.
  • Metoda main din GuiClient trebuie să instanțieze un obiect de tip Socket și un obiect de tip GuiClient.
  • 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
    • 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
  • 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.