java swing

background image

Przygotował: Jacek Sroka

1

Java SE

Swing

background image

Przygotował: Jacek Sroka

2

GUI w Javie

Abstract Window Toolkit (AWT)

podstawowy

(wspólny mianownik)

zbiór komponentów opartych na zarządcy okien

wspólny mianownik funkcjonalności ze wszystkich platform

rozbudowany model obsługi zdarzeń

klasy pomocnicze m.in. kształty, kolory i fonty

zarządcy układu

obsługa schowka

background image

Przygotował: Jacek Sroka

3

GUI w Javie

Swing

to co w AWT plus

Javowa implementacja komponentów z AWT

rozbudowany zestaw komponentów zaimplementowanych w Javie

tylko komponenty najwyższego poziomu są oparte na zarządcy okien

ta sama funkcjonalność na wszystkich platformach

przełączalny wygląd i zachowanie (pluggable look and feel)

dość dobra ale nie idealna symulacja wyglądu zarządcy okien (nie korzysta z
akceleracji)

background image

Przygotował: Jacek Sroka

4

GUI w Javie c.d.

Standard Widget Toolkit (SWT)

zapoczątkowany przez IBMa, rozwijany w ramach platformy Eclipse

opiera się na zarządcy okien tak ja AWT, ale nie ogranicza
funkcjonalności

gorsze przenośność aplikacji (WORE vs WOTE)

background image

Przygotował: Jacek Sroka

5

import

javax.swing.*;

public

class

WitajŚwiecie {

private

static

void

utwórzGUI() {

//tworzenie nowego okna

JFrame frame =

new

JFrame(

"Okno WitajŚwiecie"

);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//dodawanie etykiety z przywitaniem

JLabel label =

new

JLabel(

"Witaj świecie!"

);

frame.add(label);

//ustalanie wymiarów i wyświetlanie okna

//frame.pack(); //względem komponentów

frame.setSize(300,150);

frame.setVisible(

true

);

}

public

static

void

main(String[] args) {

//aby uniknąć zakleszczeń tworzenie GUI

//zlecamy do wątku obsługi zdarzeń

SwingUtilities.invokeLater(

new

Runnable() {

public

void

run() {

utwórzGUI();

}

});

}

}

Przykład

background image

Przygotował: Jacek Sroka

6

Zarządcy układu

BorderLayout

używany domyślnie przez główne komponenty (JApplet, JDialog i
JFrame)

ogólnie ustawiamy metodą setLayout(LayoutManager)

rejony: prawo, lewo, góra, dół, środek (domyślnie)

dodanie nowego komponentu do rejonu już posiadającego zawartość
spowoduje jej podmianę

FlowLayout

układa komponenty od lewej do prawej

dozwala komponentom na preferowany
rozmiar, nawet jak nie będą przez to
widoczne w całości

background image

Przygotował: Jacek Sroka

7

Zarządcy układu c.d.

GridLayout

komponenty umieszczane są w komórkach siatki

wszystkie komponenty mają taki sam rozmiar

I wiele innych...

BoxLayout – wiersz lub kolumna (można zagnieżdżać)

GridBagLayout – duże możliwości, skomplikowany

SpringLayout – rozmieszczenie wyznaczone przez więzy (sprężyny z

minimalną, maksymalną i optymalną długością)

CardLayout – przełączalne karty

background image

Przygotował: Jacek Sroka

8

Obsługa zdarzeń

Wzorzec Obserwator (ang. Observer)

Wydawca-Prenumerator (ang. Publish-Subscribe)

Delegowanie obsługi zdarzeń (ang. Delegation Event Model)

Konwencja nazewnicza

addActionListener(ActionListener) i

removeActionListener(ActionListener)

actionPerformed(ActionEvent)

Kod obsługi zdarzeń wykonywany jest przez wątek

koordynujący zdarzenia

długotrwałe operacje zamulają interfejs

można używać SwingUtilities.invokeLater()

background image

Przygotował: Jacek Sroka

9

public

class

ZliczanieKliknięć

extends

JFrame {

Integer licznikKliknięć = 0; JLabel etykieta;

class

ZwiększanieLicznika

implements

ActionListener {

public

void

actionPerformed(ActionEvent e) {

//obiekt klasy wewnętrznej ma dostęp do skład. obiektu klasy otaczającej

licznikKliknięć++;

etykieta.setText(

"Dotychczas kliknąłeś "

+ licznikKliknięć +

(licznikKliknięć == 1 ?

" raz"

:

" razy"

));

}

}

ZliczanieKliknięć() {

super

(

"Okno ZliczanieKliknięć"

);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel =

new

JPanel();

panel.setLayout(

new

GridLayout(3, 0));

JButton przycisk =

new

JButton(

"Kliknij"

);

przycisk.addActionListener(

new

ZwiększanieLicznika());

panel.add(przycisk);

etykieta =

new

JLabel(

"Jeszcze nie kliknięto ani razu"

);

panel.add(

new

JPanel());

//pusty panel zapewnia odstęp

panel.add(etykieta);

//puste obramowanie odsuwa komponenty od krawędzi

panel.setBorder(BorderFactory.createEmptyBorder(30,60,10,60));

add(panel);

//...

background image

Przygotował: Jacek Sroka

10

Najważniejsze rodzaje zdarzeń

ActionListener – kliknięcie przycisku, wybór pozycji z menu,

zaakceptowanie wartości w polu tekstowym

actionPerformed(ActionEvent e)

KeyListener – obsługa klawiatury: wciśnięcie, puszczenie i kliknięcie

klawisza

istnieje klasa adapter KeyAdapter

keyPressed(KeyEvent e)

keyReleased(KeyEvent e)

keyTyped(KeyEvent e)

background image

Przygotował: Jacek Sroka

11

Najważniejsze rodzaje zdarzeń

MouseListener – obsługa myszki: wciśnięcie przycisku, puszczenie

przycisku, kliknięcie, najechanie i opuszczenie

istnieje klasa adapter MouseMotionListener

mouseClicked(MouseEvent e)

mouseEntered(MouseEvent e)

mouseExited(MouseEvent e)

mousePressed(MouseEvent e)

mouseReleased(MouseEvent e)

MouseMotionListener – wykrywanie ruchu kursora

istnieje klasa adapter MouseMotionAdapter

mouseDragged(MouseEvent e)

mouseMoved(MouseEvent e)

background image

Przygotował: Jacek Sroka

12

Najważniejsze rodzaje zdarzeń

TextListener – dotyczy komponentów rozszerzających
JTextComponent (np. JTextArea i JTextField); zachodzi gdy zmienił

się tekst

textValueChanged(TextEvent e)

WindowListener – aktywacja/dezaktywacja,

minimalizacja/maksymalizacja, itp.

istnieje klasa adapter WindowAdapter

windowActivated(WindowEvent e)

windowClosed(WindowEvent e)

windowClosing(WindowEvent e)

windowDeactivated(WindowEvent e)

windowDeiconified(WindowEvent e)

windowIconified(WindowEvent e)

windowOpened(WindowEvent e)

background image

Przygotował: Jacek Sroka

13

Wygląd i zachowanie

Standardowe podklasy LookAndFeel

javax.swing.plaf.metal.MetalLookAndFeel – domyślne

międzyplatformowe wygląd i zachowanie Javy; można go używać na każdej
platformie,

com.sun.java.swing.plaf.windows.WindowsLookAndFeel –

wygląd i zachowanie symulujące te znane z systemu Windows; obecnie
można ich używać tylko pod systemem Windows,

com.sun.java.swing.plaf.motif.MotifLookAndFeel – wygląd i

zachowanie CDE/Motif; domyślne na systemach firmy SUN; można go
używać na każdej platformie,

com.sun.java.swing.plaf.gtk.GTKLookAndFeel – wygląd i

zachowanie GTK+ (nie jest dostępny w wszystkich wersjach JRE).

wiele innych na http://www.javootoo.com/

background image

Przygotował: Jacek Sroka

14

Przełączanie wyglądu i zachowania

w trakcie startu aplikacji

java -Dswing.defaultlaf=

com.sun.java.swing.plaf.gtk.GTKLookAndFeel

MyApp

jak nie doszło jeszcze do statycznej inicjalizacji żadnej klasy
Swinga

UIManager.setLookAndFeel(String)

w trakcie działania aplikacji

SwingUtilities.updateComponentTreeUI(Component)

dwie przydatne metody:

UIManager.getSystemLookAndFeelClassName()

UIManager.getCrossPlatformLookAndFeelClassName()

background image

Przygotował: Jacek Sroka

15

Listwa górna i ramka okna

Niektóre wyglądy potrafią same rysować listwę górną i ramkę

okna, np. javax.swing.plaf.metal.MetalLookAndFeel

zazwyczaj jest dostarczana przez menadżera okien

JFrame.setDefaultLookAndFeelDecorated(true)

background image

Przygotował: Jacek Sroka

16

Co dalej

Ćwiczenia z ważniaka

Baza osób

dwie wersje: najpierw z serializacją potem z JPA

Bardzo dobre przewodniki na

http://java.sun.com/docs/books/tutorial/

Projekt Matisse

http://www.netbeans.org/kb/trails/matisse.html


Wyszukiwarka

Podobne podstrony:
java swing
java swing
java swing(2)
java swing
Java Media FreamWork
java 2
Projekt java
JAVA tablice
Inzynieria oprogramowania w ujeciu obiektowym UML wzorce projektowe i Java iowuje
Java Przewodnik dla poczatkujacych Wydanie V javpp5
zasady grupy, java, javascript, oprogramowanie biurowe, programowanie, programowanie 2, UTK, systemy
praktyczny kurs java NX2M5DXARLEHY6NHXOS5FJHKLI6ACRLQQSDRS2Q
notatki java 08
Praktyczny kurs Java
Java praca domowa 10
java 3 id 226367 Nieznany
ProcChem swing W2
Java Coding rules
java object serialization speci Nieznany

więcej podobnych podstron