This shows you the differences between two versions of the page.
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}} |