Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo:laboratoare:11 [2017/10/30 20:59]
127.0.0.1 external edit
poo:laboratoare:11 [2021/12/15 15:09] (current)
mihai.nan
Line 1: Line 1:
 ===== Laboratorul 11. ===== ===== Laboratorul 11. =====
  
 +=== Problema 1 ===
 +Pornind de la clasa **//​Book//​**,​ pusă la dispoziție în arhiva laboratorului,​ realizați o listă, obiect de tip **//​JList//​**,​ care să afișeze o serie de cărți. ​
  
 +În implementare,​ constructorul obiectului **//​JList//​** primește ca parametru un obiect de tip **//​Vector//​**,​ care o să conțină elemente de tip **//​Book//​**.
 +
 +<note important>​Lista va afisa pentru fiecare carte titlul si autorul (numele icon-ului corespunzator va fi sirul vid ""​)!
 +Lista trebuie sa fie una scrolabila.
 +</​note>​
 +
 +{{:​poo:​laboratoare:​prob1.png|}}
 +
 +===Problema 2===
 +
 +Modificați aplicația realizată la problema anterioară,​ folosind de această dată, în loc de un obiect de tip **//​Vector//​**,​ un obiect de tip **//​DefaultListModel//​**. ​
 +De asemenea, adaugați două câmpuri text și doua etichete pentru titlul cărții și autor. Cele patru elemente se vor plasa într-un panou separat. ​
 +Adaugați listei un ascultător de tip **//​ListSelectionListener//​**. Atunci când utilizatorul va selecta un câmp al listei, trebuie să se introducă informațiile aferente cărții selectate în cele două câmpuri text.
 +
 +Pentru a evita producerea unei exceptii, uzitati codul de mai jos.
 +<code java>
 +@Override
 +public void valueChanged(ListSelectionEvent e) {
 +    //JList listBook - membrul al clasei
 +    if(listBook.isSelectionEmpty()) ​            
 +        return;
 +}
 +</​code>​
 +
 +<note tip>​GridLayout</​note>​
 +
 +{{:​poo:​laboratoare:​prob2.png|}}
 +
 +===Problema 3===
 +Pentru aplicația anterioară,​ implementați o modalitate de ștergere a unei celule selectate; operația se va executa la apăsarea unui buton adăugat pentru aceasta.
 +
 +{{:​poo:​laboratoare:​prob3.png|}}
 +
 +===Problema 4===
 +Realizați o aplicație care să permită afișarea tuturor fișierelor dintr-un director. Aceasta va conține, în partea stângă, un obiect de tip **//​JTree//​** ce va afișa directoarele și fișierele aflate în directorul părinte pe care dorim să îl explorăm, iar în partea dreapta un tabel, obiect de tip **//​JTable//​**,​ care va conține informații detaliate pentru fiecare fișier din directorul selectat. Mai exact, tabelul va avea următoarele câmpuri: numele, dimensiunea,​ data ultimei modificări și tipul.
 +
 +{{:​poo:​laboratoare:​aplicatie2.png|}}
 +
 +
 +===Problema 5===
 +
 +Pornind de la aplicația implementată la problema precedentă,​ să se adauge două JTextField-uri în care se vor completa numărul liniei şi respectiv al coloanei selectate din JTable.
 +
 +Pentru aceasta se vor defini două clase ascultător ANONIME compatibile cu interfața **//​ListSelectionListener//​**,​ în care se va implementa metoda **//​valueChanged()//​**,​ cu argument de tip **//​ListSelectionEvent//​**.
 +
 +Se vor adăuga cele două clase ascultător anonime la obiectele **//​ListSelectionModel//​** pentru modelul pe linii, respectiv pe coloane al tabelului, modele care vor fi extrase cu metoda **//​getSelectionModel()//​** (vezi exemplu şi curs).
 +
 +Exemplu:
 +<code java>
 +ListSelectionModel rowSM = table.getSelectionModel();​
 +ListSelectionModel colSM = table.getColumnModel().getSelectionModel();​
 +</​code>​
 +
 +{{:​poo:​laboratoare:​prob5.png?​700|}}
 +===Problema 6===
 +
 +Să se adauge aplicației de la problema 2 o clasă **//​BookRenderer//​**,​ care să extindă **//​JPanel//​** și să implementeze **//​ListCellRenderer//​**. Această clasă va conține trei obiecte de tip **//​JLabel//​** (Titlul, Autorul si Imaginea), pentru a schimba aspectul listei inițiale. De această dată, pentru fiecare carte vom afișa titlul, autorul, dar și imaginea aferentă. Atunci când o celulă este selectată o să apară pe fundal rosu, iar când nu este selectată verde dacă este pe o poziție pară și galben dacă este pe una impară.
 +
 +<code java>
 +icon.setIcon(new ImageIcon("​Imagini/"​ + book.getIconName() + "​.jpg"​));​
 +</​code>​
 +
 +{{:​poo:​laboratoare:​aplicatie.png|}}
 +
 +{{:​poo:​laboratoare:​laborator11.zip|Arhiva laborator}}
poo/laboratoare/11.1509389957.txt.gz · Last modified: 2017/12/05 13:19 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0