This shows you the differences between two versions of the page.
poo:laboratoare:10 [2022/11/30 12:59] carmen.odubasteanu |
poo:laboratoare:10 [2023/11/27 18:45] (current) carmen.odubasteanu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laboratorul 9. ===== | ===== Laboratorul 9. ===== | ||
**Atentie!** | **Atentie!** | ||
- | //Acest laborator se va rezolva acasa, de catre TOATA SERIA (inclusiv grupa de luni), | + | |
- | si se va rezenta la laboratoarele din saptamanile 5-9 dec sau 12-16 dec. | + | <hidden> |
- | Primele 2 probleme sunt rezolvate, trebuie sa rezolvati doar ultimele 4 probleme. | + | Acest laborator se va rezolva acasa, de catre TOATA SERIA (inclusiv grupa de luni), |
+ | si se va prezenta la laboratoarele din saptamanile 5-9 dec sau 12-16 dec. | ||
+ | </hidden> | ||
+ | |||
+ | |||
+ | |||
+ | Primele 2 probleme sunt rezolvate, testati-le si apoi rezolvati si celelalte probleme din laborator. | ||
Folositi pentru aceasta exemplele de rezolvari de la primele 2 probleme. | Folositi pentru aceasta exemplele de rezolvari de la primele 2 probleme. | ||
- | {{:poo:laboratoare:laborator_swing_1_rezolvari1_2.zip| Arhiva rezolvari problema 1 si 2}} | + | {{:poo:laboratoare:laborator_swing_1_rezolvari1_2.zip| Arhiva rezolvari problema 1 si 2}} |
+ | |||
+ | Rezolvarile vor tine cont de indicatiile de la curs 9 - vezi ultimul slide din curs - si anume, folosim direct componentele si optiunile Swing, nu doar AWT! | ||
- | Rezolvarile vor tine cont de indicatiile de la curs: folosim direct componentele si | ||
- | optiunile Swing, nu doar AWT! | ||
- | // | ||
=== Problema 1 === | === Problema 1 === | ||
Line 29: | Line 35: | ||
Sa se realizeze un program care citeste dintr-un fisier o intrebare urmata | Sa se realizeze un program care citeste dintr-un fisier o intrebare urmata | ||
- | de 4 raspunsuri posibile, unul singur fiind corect (primul indicat in fisier), si afiseaza un camp text nemodificabil, care va contine enuntul intrebarii, patru butoane de tip **//JRadioButton//**, grupate intr-un grup de butoane (**//ButtonGroup//**),continand raspunsurile posibile, si un buton pentru validarea raspunsului selectat. | + | de 4 raspunsuri posibile, unul singur fiind corect (primul indicat in fisier), si afiseaza un camp text nemodificabil, care va contine enuntul intrebarii, patru butoane de tip **JRadioButton**, grupate intr-un grup de butoane (**ButtonGroup**),continand raspunsurile posibile, si un buton pentru validarea raspunsului selectat. |
Butonul de validare este de tip JButton si este accesibil doar dupa ce a | Butonul de validare este de tip JButton si este accesibil doar dupa ce a | ||
fost ales un raspuns. In cazul in care raspunsul selectat este corect, se va aplica | fost ales un raspuns. In cazul in care raspunsul selectat este corect, se va aplica | ||
Line 48: | Line 54: | ||
=== Problema 3 === | === Problema 3 === | ||
- | Modificati programul implementat la exercitiul anterior, pentru afisarea unor casete cu bifare, **//JCheckBox//**. Astfel, de aceasta data vom avea un program care permite uzitarea unor intrebari cu raspunsuri corecte multiple. Toate cele patru casete de tip **//JCheckBox//** vor avea un singur ascultator de tip **//ItemListener//**, cu o metoda **//itemStateChanged()//** si cu un argument de tip **//ItemEvent//**. | + | Modificati programul implementat la exercitiul anterior, pentru afisarea unor casete cu bifare, **JCheckBox**. Astfel, de aceasta data vom avea un program care permite uzitarea unor intrebari cu raspunsuri corecte multiple. Toate cele patru casete de tip **JCheckBox** vor avea un singur ascultator de tip **ItemListener**, cu o metoda **itemStateChanged()** si cu un argument de tip **ItemEvent**. |
Butonul de validare este de tip JButton si este accesibil doar dupa ce a fost ales un raspuns. La apasarea butonului de validare se va aplica textelor raspunsurilor corecte culoarea verde, iar celor incorecte li se va aplica culoarea rosie. Presupunem ca sunt corecte primul si al treilea raspuns. | Butonul de validare este de tip JButton si este accesibil doar dupa ce a fost ales un raspuns. La apasarea butonului de validare se va aplica textelor raspunsurilor corecte culoarea verde, iar celor incorecte li se va aplica culoarea rosie. Presupunem ca sunt corecte primul si al treilea raspuns. | ||
Line 56: | Line 62: | ||
=== Problema 4 === | === Problema 4 === | ||
- | Sa se implementeze o aplicatie grafica cu 3 obiecte cursor, de tip **//JSlider//**, si un camp text. Fiecare cursor corespunde ponderii unei culori (Red, Green, Blue), iar culoarea apare in campul text. Pentru fiecare obiect JSlider, trebuie sa definiti urmatoarele: orientarea, valoarea minima, valoarea maxima si valoarea initiala afisata (ca numere intregi). | + | Sa se implementeze o aplicatie grafica cu 3 obiecte cursor, de tip **JSlider**, si un camp text. Fiecare cursor corespunde ponderii unei culori (Red, Green, Blue), iar culoarea apare in campul text. Pentru fiecare obiect JSlider, trebuie sa definiti urmatoarele: orientarea, valoarea minima, valoarea maxima si valoarea initiala afisata (ca numere intregi). |
- | La deplasarea cursorului, se genereaza un eveniment de tip **//ChangeEvent//** si se apeleaza metoda **//stateChanged//**, dintr-un obiect **//ChangeListener//**. Valoarea ce corespunde pozitiei cursorului se poate obtine cu metoda **//getValue()//** din clasa **//JSlider//**, ce are ca rezultat un **//int//**. | + | La deplasarea cursorului, se genereaza un eveniment de tip **ChangeEvent** si se apeleaza metoda **stateChanged**, dintr-un obiect **ChangeListener**. Valoarea ce corespunde pozitiei cursorului se poate obtine cu metoda **getValue()** din clasa **JSlider**, ce are ca rezultat un **int**. |
<note important> slider = new JSlider(JSlider.HORIZONTAlL, 0, 255, 0); </note> | <note important> slider = new JSlider(JSlider.HORIZONTAlL, 0, 255, 0); </note> | ||
Line 64: | Line 70: | ||
=== Problema 5 === | === Problema 5 === | ||
- | Program pentru afisarea unui buton cu inscriptia Colors si modificarea culorii acestuia ca urmare a efectuarii unui click pe buton. Metoda **//setForeground()//** cu parametru de tip **//Color//** schimba culoarea textului, iar metoda **//setBackground()//** schimba culoarea butonului. La fiecare click se va itera pe un vector de culori, initializat cu constante (**//Color.RED//**, **//Color.BLUE//** etc). Folositi o fereastra **//JFrame//** cu dimensiuni mici (100, 100) si organizarea **//FlowLayout//**. Implementati si posibilitatea de actionare a butonului prin combinatia de taste ALT+C. | + | Program pentru afisarea unui buton cu inscriptia Colors si modificarea culorii acestuia ca urmare a efectuarii unui click pe buton. Metoda **setForeground()** cu parametru de tip **Color** schimba culoarea textului, iar metoda **setBackground()** schimba culoarea butonului. La fiecare click se va itera pe un vector de culori, initializat cu constante (**Color.RED**, **Color.BLUE** etc). Folositi o fereastra **JFrame** cu dimensiuni mici (100, 100) si organizarea **FlowLayout**. Implementati si posibilitatea de actionare a butonului prin combinatia de taste ALT+C. |
<note important> buton.setMnemonic(KeyEvent.VK_C); </note> | <note important> buton.setMnemonic(KeyEvent.VK_C); </note> | ||
Line 70: | Line 76: | ||
=== Problema 6 === | === Problema 6 === | ||
- | Realizati o fereastra cu titlu, folosind **//JFrame//**, care sa contina urmatoarele: o eticheta, avand ca text Calea, un **//JTextField//**, un **//JButton//** si un **//JScrollPane//** care sa contina un **//JTextArea//**, setat initial ca fiind invizibil. | + | Realizati o fereastra cu titlu, folosind **JFrame**, care sa contina urmatoarele: o eticheta, avand ca text Calea, un **JTextField**, un **JButton** si un **JScrollPane** care sa contina un **JTextArea**, setat initial ca fiind invizibil. |
- | Dupa ce se va introduce o cale, catre un fisier text aflat local pe disc, se va afisa continutul acestui fisier in fereastra, uzitand componenta de tip **//JTextArea//**. | + | Dupa ce se va introduce o cale, catre un fisier text aflat local pe disc, se va afisa continutul acestui fisier in fereastra, uzitand componenta de tip **JTextArea**. |
- | Componenta de tip **//JScrollPane//** va deveni vizibila la accesarea butonului, daca exista fisierul specificat local pe disc, in caz contrar, se va sterge continutul din **//JTextField//**. | + | Componenta de tip **JScrollPane** va deveni vizibila la accesarea butonului, daca exista fisierul specificat local pe disc, in caz contrar, se va sterge continutul din **JTextField**. |
<note important> File f = new File(path); | <note important> File f = new File(path); |