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: