Table of Contents

Laborator 9

Arhiva laborator

Problema 1

Să se realizeze un program care afișează patru câmpuri text și un buton. În primele trei câmpuri text, utilizatorul introduce numele discului suport (A:, C:, D:), calea (secvența de directoare) și numele unui fișier. La apăsarea pe buton se va afișa, în cel de-al patrulea câmp text, calea completă la fișier.

În implementare, se vor scrie următoarele două variante:

Trecerea de la un câmp text la altul se va putea face și cu tasta Tab. Însă evenimentul de tip ActionEvent pentru un JTextField se generează la apăsarea lui Enter!

Problema 2

Să se realizeze un program care citește dintr-un fișier o întrebare urmată de 4 răspunsuri posibile, unul singur fiind corect (primul indicat în fișier), și afișează un câmp text nemodificabil, care va conține enunțul întrebării, patru butoane de tip JRadioButton, grupate într-un grup de butoane (ButtonGroup), conținând răspunsurile posibile, și un buton pentru validarea răspunsului selectat.

Butonul de validare este de tip JButton și este accesibil doar după ce a fost ales un răspuns. În cazul în care răspunsul selectat este corect, se va aplica textului răspunsului culoarea verde, iar, în caz contrar, i se va aplica răspunsului corect culoarea roșie.

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() instanceof JRadioButton) {
        button.setEnabled(true);
    }
}

Fișier de intrare: intrebare.txt

Problema 3

Modificați programul implementat la exercițiul anterior, pentru afișarea unor casete cu bifare, JCheckBox. Astfel, de această dată vom avea un program care permite uzitarea unor întrebări cu răspunsuri corecte multiple.

Toate cele patru casete de tip JCheckBox vor avea un singur ascultător de tip ItemListener, cu o metodă itemStateChanged() și cu un argument de tip ItemEvent.

Butonul de validare este de tip JButton și este accesibil doar după ce a fost ales un răspuns. La apăsarea butonului de validare se va aplica textelor răspunsurilor corecte culoarea verde, iar celor incorecte li se va aplica culoarea roșie.

Presupunem că sunt corecte primul și al treilea răspuns.

Metodă utilă: getSource()

Problema 4

Să se implementeze o aplicație grafică cu 3 obiecte cursor, de tip JSlider, și un câmp text. Fiecare cursor corespunde ponderii unei culori (Red, Green, Blue), iar culoarea apare în câmpul text.

Pentru fiecare obiect JSlider, trebuie să definiți următoarele:

La deplasarea cursorului, se generează un eveniment de tip ChangeEvent și se apelează metoda stateChanged, dintr-un obiect ChangeListener.

Valoarea ce corespunde poziției cursorului se poate obține cu metoda getValue() din clasa JSlider, ce are ca rezultat un int.

slider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);

Problema 5

Program pentru afișarea unui buton cu inscripția “Colors” și modificarea culorii acestuia ca urmare a efectuării unui click pe buton.

Metoda setForeground() cu parametru de tip Color schimbă culoarea textului, iar metoda setBackground() schimbă culoarea butonului. La fiecare click se va itera pe un vector de culori, inițializat cu constante (Color.RED, Color.BLUE etc).

Folosiți o fereastră JFrame cu dimensiuni mici (100, 100) și organizarea FlowLayout.

Implementați și posibilitatea de acționare a butonului prin combinația de taste ALT+C.

buton.setMnemonic(KeyEvent.VK_C);

Problema 6

Realizați o fereastră cu titlu, folosind JFrame, care să conțină următoarele:

După ce se va introduce o cale, către un fișier text aflat local pe disc, se va afișa conținutul acestui fișier în fereastră, uzitând componenta de tip JTextArea.

Componenta de tip JScrollPane va deveni vizibilă la accesarea butonului, dacă există fișierul specificat local pe disc, în caz contrar, se va șterge conținutul din JTextField.

File f = new File(path);
if(f.exists() && !f.isDirectory()) {
    // ...
}