Wykorzystując bibliotekę AWT stwórz prosty minutnik, który pozwala na odliczanie czasu od wartości podanej przez użytkownika do 0. Po zakonczeniu odliczania poinformuj o tym użytkownika (np. zmieniając kolor tła okna lub wyświetlając widoczną informację). Aplikacja powinna posiadać możliwość uruchomienia odliczania, zatrzymania go, ponownego uruchomienia i powrotu do stanu pierwotnego licznika. W swoim kodzie postaraj się wykorzystać wątki.
Cel: przećwiczyć Frame, Panel, TextField, Button, ActionListener.
Kroki:
Frame z BorderLayoutTextField (imię, nazwisko)PokażLabel: „Witaj, Imię Nazwisko”Wskazówki:
WindowAdapter, by poprawnie zamknąć aplikacjęSkrócone rozwiązanie:
showButton.addActionListener(e -> { resultLabel.setText("Witaj, " + nameTf.getText() + " " + surnameTf.getText()); });
Cel: przećwiczyć Canvas, paint(), repaint(), MouseMotionListener.
Kroki:
PaintCanvas przechowującą listę punktówmouseDragged dodawaj punkt i wywołuj repaint()Wyczyść, który resetuje listę punktówWskazówki:
paint ma tylko odtwarzać stan zapisany w polach klasySkrócone rozwiązanie:
clearButton.addActionListener(e -> canvas.clearAll());
Cel: pokazać różnicę między FlowLayout i GridLayout.
Kroki:
Przełącz układpanel.validate() i panel.repaint()TextField + przycisk Oblicz + Label z wynikiemNumberFormatException) i pokaż komunikatKliknij mnie zwiększa licznik i odświeża LabelCheckboxGroup (np. „Tryb A / Tryb B”) i Choice z 3 opcjamiTextArea + przyciski Wyczyść i StatystykiStatystyki pokazują liczbę znaków i liniiCanvas rysuj kliknięciem koło lub prostokąt (wybór przez Choice)Checkbox lub Choice)Frame + Dialog niemodalnyCanvas przy wciśniętym klawiszu myszy. Rejestruj kolejne punkty w odpowiedniej strukturze danych tak aby można było je później odtworzyć.Canvas i odbija od krawędzirepaint()Integer.parseInt(…) w try/catchtry { int a = Integer.parseInt(aField.getText().trim()); int b = Integer.parseInt(bField.getText().trim()); result.setText("Suma: " + (a + b)); } catch (NumberFormatException ex) { result.setText("Błąd: podaj poprawne liczby całkowite"); }
counter++; label.setText(„Kliknięcia: ” + counter);textArea.getText().split(„\R”, -1).lengthStatystyki pokaż wynik w Label lub DialogShapeModel (typ, x, y, kolor)paint iteruj po liście i rysuj odpowiednią figuręnew Thread(() -> { while (running) { x += vx; y += vy; if (x < 0 || x > getWidth() - size) vx = -vx; if (y < 0 || y > getHeight() - size) vy = -vy; repaint(); try { Thread.sleep(16); } catch (InterruptedException ignored) {} } }).start();
setLayout(null))