Differences

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

Link to this comparison view

poo:laboratoare:11 [2017/12/05 13:19]
mihai.nan
poo:laboratoare:11 [2021/12/15 15:09] (current)
mihai.nan
Line 6: Line 6:
 În implementare,​ constructorul obiectului **//​JList//​** primește ca parametru un obiect de tip **//​Vector//​**,​ care o să conțină elemente de tip **//​Book//​**. Î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 ​sau si autorul! +<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>​+Lista trebuie sa fie una scrolabila. 
 +</​note>​
  
 +{{:​poo:​laboratoare:​prob1.png|}}
  
 ===Problema 2=== ===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.+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. Pentru a evita producerea unei exceptii, uzitati codul de mai jos.
Line 26: Line 30:
 <note tip>​GridLayout</​note>​ <note tip>​GridLayout</​note>​
  
 +{{:​poo:​laboratoare:​prob2.png|}}
  
 ===Problema 3=== ===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. 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=== ===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 ​părinte. Mai exact, tabelul va avea următoarele câmpuri: numele, dimensiunea,​ data ultimei modificări și tipul.+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=== ===Problema 5===
  
-Pornind de la aplicația implementată la problema precedentă,​ sș se definească ​două clase ascultător compatibile cu interfața **//​ListSelectionListener//​**,​ implementând metoda **//​valueChanged()//​**,​ cu argument de tip **//​ListSelectionEvent//​**. Metoda extrage ​numărul liniei ​sau coloanei, uzitând metoda **//​getMinSelectionIndex()//​**,​ și afișează acest număr într-un câmp text. Să se adauge cei doi +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.
-ascultători la obiectele **//​ListSelectionModel//​** extrase cu metoda **//​getSelectionModel()//​**.+
  
 +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> <code java>
 ListSelectionModel rowSM = table.getSelectionModel();​ ListSelectionModel rowSM = table.getSelectionModel();​
Line 45: Line 57:
 </​code>​ </​code>​
  
 +{{:​poo:​laboratoare:​prob5.png?​700|}}
 ===Problema 6=== ===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ă ​un fundal ​de o anumită culoare, iar când nu este selectată verde dacă este pe o poziție pară și galben dacă este pe una impară.+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> <code java>
 icon.setIcon(new ImageIcon("​Imagini/"​ + book.getIconName() + "​.jpg"​));​ icon.setIcon(new ImageIcon("​Imagini/"​ + book.getIconName() + "​.jpg"​));​
 </​code>​ </​code>​
 +
 +{{:​poo:​laboratoare:​aplicatie.png|}}
 +
 +{{:​poo:​laboratoare:​laborator11.zip|Arhiva laborator}}
poo/laboratoare/11.1512472745.txt.gz · Last modified: 2017/12/05 13:19 by mihai.nan
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