+ All Categories
Home > Documents > Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em...

Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em...

Date post: 27-Dec-2019
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
37
Semin ´ r Java GUI Radek Koˇ ı Fakulta informaˇ cn´ ıch technologi´ ı VUT Duben 2012 Radek Koˇ ı Semin ´ r Java – GUI (JFC/Swing) 1/ 35
Transcript
Page 1: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Seminar JavaGUI

Radek Kocı

Fakulta informacnıch technologiı VUT

Duben 2012

Radek Kocı Seminar Java – GUI (JFC/Swing) 1/ 35

Page 2: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Tema prednasky

GUI

Ukazkovy prıklad

Radek Kocı Seminar Java – GUI (JFC/Swing) 2/ 35

Page 3: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Graficke uzivatelske rozhranı

Swing

nove GUI dostupne od verze 1.2.x

soucast JFC (Java Foundation Classes)

konecna verze GUI pro Javu

AWT (Abstract Window Toolkit)

starsı varianta dostupna od verze 1.x.x

od verze 1.1.x udalostne rızena

omezene moznosti

Radek Kocı Seminar Java – GUI (JFC/Swing) 3/ 35

Page 4: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Graficke uzivatelske rozhranı

Balıcky

java.awt – zakladnı komponenty AWT GUI

java.awt.event – udalosti AWT GUI

+ dalsı balıky v java.awt

javax.swing – zakladnı komponenty Swing GUI

javax.swing.event – udalosti komponenty Swing GUI

+ dalsı balıky v javax.swing

Radek Kocı Seminar Java – GUI (JFC/Swing) 4/ 35

Page 5: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Graficke uzivatelske rozhranı

Rızenı programu udalostmi

obecnejsı pojem oznacujıcı typ asynchronnıho

programovanı

zakladnı princip tvorby GUI

tok programu je rızen udalostmi (zpracovanı udalostı

urcuje beh aplikace)

udalostnı aplikace by mely byt programovany jako

vıcevlaknove

Radek Kocı Seminar Java – GUI (JFC/Swing) 5/ 35

Page 6: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Tvorba GUI

Komponenty GUI

graficke (uzivatelske) elementy – tabulka, text, . . .

graficke kontejnery

Zakladnı prıstup

udalostnı rızenı

kontejnery obsahujı elementy a/nebo jine kontejnery

vzhled GUI je dan zpusobem poskladanı grafickych

elementu a kontejneru

http://download.oracle.com/javase/

tutorial/uiswing/components/

Radek Kocı Seminar Java – GUI (JFC/Swing) 6/ 35

Page 7: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Ukazka Swing aplikace

public class HelloWorld {

public static void main(String[] args) {

// vytvoreni okna aplikace

JFrame okno = new JFrame("Hello World");

// vytvoreni textu a vlozeni do okna

JLabel text = new JLabel("Nazdarek ...");

okno.getContentPane().add(label);

// implicitni operace pri zavreni okna

okno.setDefaultCloseOperation(

JFrame.EXIT_ON_CLOSE);

// otevreni okna

okno.pack();

okno.setVisible(true);

}

}Radek Kocı Seminar Java – GUI (JFC/Swing) 7/ 35

Page 8: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Rozmıstenı komponent

Rozmıstenı komponent

komponenty se vkladajı do grafickych kontejneru

umıstenı komponenty nenı dano absolutnı polohou

umıstenı komponenty je vztazeno relativne ke kontejneru,

ve kterem je vlozena

zpusob umıstenı je dan spravcem umıstenı

velikost, tvar a rozmıstenı zavisı na typu spravcezalezı na poradı vlozenı (add())

Radek Kocı Seminar Java – GUI (JFC/Swing) 8/ 35

Page 9: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Spravce rozmıstenı

Nastavenı spravce rozmıstenı

v konstruktoru pri vytvarenı kontejneru

converterPanel =

new JPanel(new GridLayout(2, 2));

metodou setLayout() kontejneru

JFrame okno =

new JFrame("Hello World application");

okno.getContentPane().

setLayout(new FlowLayout());

Radek Kocı Seminar Java – GUI (JFC/Swing) 9/ 35

Page 10: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Spravce rozmıstenı

FlowLayout

komponenty jsou ukladany zleva doprava na jeden radek

pri zaplnenı radku se prechazı na novy radek

implicitnı

GridLayout

komponenty jsou ukladany do mrızky (tabulky)

komponenty jsou ukladany zleva doprava a shora dolu do

bunek mrızky

pocet sloupcu a radku se urcuje v konstruktoru

mrızka je rovnomerna

Radek Kocı Seminar Java – GUI (JFC/Swing) 10/ 35

Page 11: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Spravce rozmıstenı

GridBagLayout

nejmocnejsı (take nejslozitejsı) spravce umıstenı

o umıstenı prvku muzeme rozhodovat naprosto volne

vyuzıvan predevsım pri automatickem generovanı kodu

(RAD nastroje)

BoxLayout

vychazı z GridLayout

umoznuje vodorovne nebo svisle umıstenı

umoznuje nastavit roztece (mechanizmus ”rozpery a tmel”)

Radek Kocı Seminar Java – GUI (JFC/Swing) 11/ 35

Page 12: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Spravce rozmıstenı

BorderLayout

implicitne umistuje komponenty na stred a roztahuje na

celou velikost kontejneru

lze definovat oblast vlozenı v prepsane metode add()

BorderLayout.NORTH

BorderLayout.SOUTH

BorderLayout.EAST

BorderLayout.WEST

BorderLayout.CENTER (implicitnı)

Bez spravce

setLayout(null)

Radek Kocı Seminar Java – GUI (JFC/Swing) 12/ 35

Page 13: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Udalostnı programovanı

Rızenı programu udalostmi

udalost vznika obvykle uzivatelskou akcı (kliknutı, zmena

polohy mysi, . . . )

udalost muze vzniknout v libovolne komponente GUI

kazda komponenta ma definovaneho ”posluchace”

(listener) udalostı

pri vyvolanı udalosti zasle system zpravu posluchaci – ten

udalost zpracuje

Radek Kocı Seminar Java – GUI (JFC/Swing) 13/ 35

Page 14: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

GUI – typy udalostı

Udalosti lze rozdelit podle uzivatelske akce nad

oknem – WindowEvent

klavesnicı – KeyEvent

mysı (klikanı, pohyb) – MouseEvent

fokusem (zıskanı, ztrata) – FocusEvent

GUI (obecna akce, napr. stisk tlacıtka) – ActionEvent

. . . (viz java.awt.event a java.swing.event)

Radek Kocı Seminar Java – GUI (JFC/Swing) 14/ 35

Page 15: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Udalostnı programovanı

Posluchac udalostı

objekt, jehoz trıda implementuje prıslusne rozhranı

Rozhranı posluchacu udalostı

ActionListener (awt)

MouseListener (awt)

MouseMotionListener (awt)

MouseInputListener (swing)

. . . (viz java.awt.event a java.swing.event)

Radek Kocı Seminar Java – GUI (JFC/Swing) 15/ 35

Page 16: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Udalostnı programovanı

Pridanı posluchace udalostı

komponenta musı registrovat posluchace udalostı, aby

prıslusna udalost mohla byt osetrena

kazda komponenta knihovny Swing obsahuje

metodu addXXXListener()

metodu removeXXXListener()

kde XXX reprezentuje nazev udalosti (Mouse, ...)

napr. addActionListener(ActionListener

listener)

Radek Kocı Seminar Java – GUI (JFC/Swing) 16/ 35

Page 17: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Udalostnı programovanı

Implementace posluchace udalostı

anonymnı trıda

vnitrnı trıda

top-level trıda

Radek Kocı Seminar Java – GUI (JFC/Swing) 17/ 35

Page 18: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Udalostnı programovanı

class myActionListener implements ActionListener {

public void actionPerformed(ActionEvent event) {

...

}

}

...

convertTemp = new JButton("Convert");

convertTemp.

addActionListener(new MyActionListener());

...

Radek Kocı Seminar Java – GUI (JFC/Swing) 18/ 35

Page 19: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Rozsırenı komponent

java.awt.Component

java.awt.Container

java.swing.JComponent

Trıda JComponent

metoda void paintComponent(Graphics g)

metoda void repaint()

Radek Kocı Seminar Java – GUI (JFC/Swing) 19/ 35

Page 20: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

GUI a paralelismus

button.addActionListener(new DoSomething());

class DoSomething implements ActionListener {

public void actionPerformed(ActionEvent event) {

try {

Thread.sleep(10000);

} catch (InterruptedException e) {}

}

}

Radek Kocı Seminar Java – GUI (JFC/Swing) 20/ 35

Page 21: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

GUI a paralelismus

class DoSomething implements ActionListener {

public void actionPerformed(ActionEvent event) {

Runnable r = new Runnable() {

public void run() {

label.setText("Time consuming operation");

try {

Thread.sleep(10000);

} catch (InterruptedException e) {}

label.setText("");

}

};

new Thread(r).start();

}

}

Radek Kocı Seminar Java – GUI (JFC/Swing) 21/ 35

Page 22: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

GUI a paralelismus

public static void main(String[] args) {

//Schedule a job for the event-dispatching thread

//creating and showing this application’s GUI.

javax.swing.SwingUtilities.

invokeLater(new Runnable()

{

public void run() {

createAndShowGUI();

}

});

}

Radek Kocı Seminar Java – GUI (JFC/Swing) 22/ 35

Page 23: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Reference

http://download.oracle.com/javase/

tutorial/uiswing/

Radek Kocı Seminar Java – GUI (JFC/Swing) 23/ 35

Page 24: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Technika navrhu

Zadanı:

Vytvorte aplikaci s GUI pro hanoiske veze.

Radek Kocı Seminar Java – GUI (JFC/Swing) 24/ 35

Page 25: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza

Ilustracnı prıklad

Radek Kocı Seminar Java – GUI (JFC/Swing) 25/ 35

Page 26: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza

Ilustracnı prıklad

Radek Kocı Seminar Java – GUI (JFC/Swing) 25/ 35

Page 27: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza

Ilustracnı prıklad

Radek Kocı Seminar Java – GUI (JFC/Swing) 25/ 35

Page 28: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Objektovy diagram

Radek Kocı Seminar Java – GUI (JFC/Swing) 26/ 35

Page 29: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 27/ 35

Page 30: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 28/ 35

Page 31: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 29/ 35

Page 32: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 30/ 35

Page 33: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 31/ 35

Page 34: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 32/ 35

Page 35: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 33/ 35

Page 36: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 34/ 35

Page 37: Semin r Java - GUIkoci/ija/prednasky/ija-gui.pdfpˇri vyvol an´ı ud´ alosti za´ sle systˇ em zpr´ avu poslucha´ ci – tenˇ udalost zpracuje´ Radek Koˇc´ı Semina´ˇr Java

Analyza – Diagram trıd

Radek Kocı Seminar Java – GUI (JFC/Swing) 35/ 35


Recommended