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.

Lista va afisa pentru fiecare carte titlul si autorul (numele icon-ului corespunzator va fi sirul vid ””)! Lista trebuie sa fie una scrolabila.

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.

@Override
public void valueChanged(ListSelectionEvent e) {
    //JList listBook - membrul al clasei
    if(listBook.isSelectionEmpty())             
        return;
}

GridLayout

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.

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.

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:

ListSelectionModel rowSM = table.getSelectionModel();
ListSelectionModel colSM = table.getColumnModel().getSelectionModel();

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ă.

icon.setIcon(new ImageIcon("Imagini/" + book.getIconName() + ".jpg"));

Arhiva laborator

poo/laboratoare/11.txt · Last modified: 2021/12/15 15:09 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