This is an old revision of the document!


Laborator 9

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:

  • Se înregistrează trei obiecte ascultător (ActionListener) câte unul pentru fiecare JTextField, care transferă textul din fiecare câmp text în cel destinat rezultatului.
  • Se înregistrează un singur obiect ascultător la JButton, care va compune datele din primele 3 câmpuri și le va afișa în cel destinat rezultatului.

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:

  • orientarea;
  • valoarea minimă;
  • valoarea maximă;
  • valoarea inițială afișată (ca numere întregi).

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:

  • o etichetă, având ca text “Calea”;
  • un JTextField;
  • un JButton;
  • un JScrollPane care să conțină un JTextArea, setat inițial ca fiind invizibil.

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()) {
    // ...
}
poo/laboratoare/09.1764514848.txt.gz · Last modified: 2025/11/30 17:00 by george.tudor1906
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