Differences

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

Link to this comparison view

poo:laboratoare:10 [2020/12/08 11:30]
carmen.odubasteanu
poo:laboratoare:10 [2023/11/27 18:45] (current)
carmen.odubasteanu
Line 1: Line 1:
-===== Laboratorul ​10. =====+===== Laboratorul ​9. ===== 
 +**Atentie!** 
 + 
 +<​hidden>​ 
 +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. 
 +{{:​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! 
  
 === Problema 1 === === Problema 1 ===
Line 12: Line 29:
    * Se inregistreaza un singur obiect ascultator la JButton, care va compune datele din primele 3 campuri si le va afisa in cel destinat rezultatului.    * Se inregistreaza un singur obiect ascultator la JButton, care va compune datele din primele 3 campuri si le va afisa in cel destinat rezultatului.
  
-<note important>​Trecerea de la un camp text la altul se va putea face si cu tasta Tab. </​note>​+<note important>​Trecerea de la un camp text la altul se va putea face si cu tasta Tab. Insa evenimentul de tip ActionEvent pentru un JTextField se genereaza la apasarea lui Enter! ​</​note>​ 
  
 === Problema 2 === === Problema 2 ===
  
 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 
 +fost ales un raspuns. In cazul in care raspunsul selectat este corect, se va aplica 
 +textului raspunsului culoarea verde, iar, in caz contrar, i se va aplica raspunsului 
 +corect culoarea rosie.
  
 <code java> <code java>
Line 30: Line 52:
 <note important>​ intrebare.txt </​note>​ <note important>​ intrebare.txt </​note>​
  
 +=== Problema 3 ===
  
-Butonul ​de validare este de tip JButton si este accesibil doar dupa ce a +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**.
-fost ales un raspuns. In cazul in care raspunsul selectat este corect, se va aplica +
-textului raspunsului culoarea verdeiar, in caz contrar, i se va aplica raspunsului +
-corect culoarea rosie. +
- +
-=== 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//​**.+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 verdeiar celor incorecte li se va aplica culoarea rosie. Presupunem ca sunt corecte primul ​si al treilea raspuns.
  
 <note important>​ getSource() </​note>​ <note important>​ getSource() </​note>​
Line 44: 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 52: 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 58: 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);
poo/laboratoare/10.1607419804.txt.gz · Last modified: 2020/12/08 11:30 by carmen.odubasteanu
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