java.awt)Component - baza dla wizualnych elementów GUIContainer - komponent, który może przechowywać inne komponentyPanel, Window, Frame, Dialog, ScrollPane - najczęściej używane konteneryFrame + układ (LayoutManager)Component:paint(Graphics g)Container:add(…), remove(…) validate() i repaint()Button - przyciskLabel - etykieta tylko do odczytuTextField - jednowierszowe pole tekstoweTextArea - wielowierszowy obszar tekstuCheckbox + CheckboxGroup - opcje pojedyncze / radioChoice - lista rozwijanaList - lista elementów (single/multi selection)Scrollbar - pasek przewijania (poziomy/pionowy)Canvas - obszar do własnego rysowaniaPanel - lekki kontener pomocniczy (domyślnie FlowLayout)Frame - główne okno aplikacji (tytuł, ramka, przyciski systemowe, domyślny układ BorderLayout)Dialog - okno pomocnicze (modalne lub niemodalne)FileDialog - systemowy wybór plikuScrollPane - automatyczne przewijanie pojedynczego komponentuApplet - okno osadzone w przeglądarce (nieużywane)import java.awt.*;
import java.awt.event.*;
public class MainWindow {
public static void main(String[] args) {
Frame frame = new Frame("AWT - Demo");
frame.setSize(500, 300);
frame.setLayout(new FlowLayout());
frame.add(new Label("Witaj w AWT"));
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
frame.dispose();
System.exit(0);
}
});
frame.setVisible(true);
}
}
setLayout(null)) pozycjonujesz ręcznie: setBounds(x, y, width, height)Panel)FlowLayout:BorderLayout:NORTH, SOUTH, EAST, WEST, CENTERFrameGridLayout:R x C, wszystkie komórki mają ten sam rozmiarPanel p = new Panel(new GridLayout(2, 2));
p.add(new Button("A"));
p.add(new Button("B"));
p.add(new Button("C"));
p.add(new Button("D"));
Button)ActionEvent (naciśnięcie przycisku), MouseEvent (ruch myszy, kliknięcie), KeyEvent (naciśnięcie klawisza), …ActionListener)component.addXxxListener(listener)Przepływ:
ActionEvent),ActionListener - kliknięcia przycisków, Enter w TextFieldItemListener - zmiana stanu Checkbox/ChoiceKeyListener - zdarzenia klawiaturyMouseListener / MouseMotionListener / MouseWheelListenerWindowListener - cykl życia okna (otwarcie, zamknięcie, aktywacja)FocusListener, ComponentListener, ContainerListener, AdjustmentListener, TextListenerWindowListener, MouseListener)WindowAdapter, MouseAdapter, KeyAdapter, FocusAdapterframe.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Button b = new Button("Policz");
TextField tf = new TextField(10);
b.addActionListener(e -> {
String text = tf.getText().trim();
System.out.println("Dane: " + text);
});
Canvas i przeciąż paint(Graphics g)drawLine, drawRect, fillRect, drawOval, fillOval, drawStringsetColor(Color), setFont(Font)paint (rysunek zniknie po odświeżeniu)class DrawingCanvas extends Canvas {
@Override
public void paint(Graphics g) {
g.setColor(Color.BLUE);
g.drawString("AWT Canvas", 20, 30);
g.setColor(Color.RED);
g.fillOval(20, 50, 120, 80);
}
}
paint(Graphics g) - metoda wywoływana przez system przy odrysowaniurepaint() - zgłoszenie prośby o ponowne odmalowanierepaint()GraphicswindowClosingrepaint(); po przebudowie komponentów: validate()Frame z tytułem „Witaj AWT” i dodaj do niego Label z tekstem „Witaj, świecie!”. WindowListenerTextField) pobierającymi dane (np. imie i nazwisko) i przyciskiem Button do wyświetlania powitania w Label.FrameActionListener) i wyświetl powitanie w Label (np. „Witaj, Jan Kowalski”)BorderLayout i Panel do rozmieszczenia komponentówWindowAdapter.Frame lub Canvas do rysowaniapaint(Graphics g) i narysuj kilka kształtów (linie, prostokąty, elipsy).Canvas wciśnięciu i przeciąganiu myszy (MouseMotionListener).drawString() zawierający aktualne współrzędne myszy. Dobierz font, wielkość i kolor tekstu.createImage(), getGraphics()).Stwórz w bibliotece AWT prostą aplikację typu minutnik, która odlicza czas od wartości podanej przez użytkownika do 0.
Wymagania:
TextField. Domyślnie może być ustawiona na 60 sekund.lub wyświetleniem komunikatu w oknie dialogowym.
Przykładowy wygląd aplikacji: