Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY GUI v Javě úvod.

Podobné prezentace


Prezentace na téma: "Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY GUI v Javě úvod."— Transkript prezentace:

1 Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY GUI v Javě úvod

2 Knihovny pro tvorbu GUI AWT (Abstract Windowing Toolkit) –již v Java 1.0 –sledování událostí postupně upravováno největší rozdíl mezi 1.0 a 1.1 –java.awt –java.awt.event a další podbalíky JFC Swing (Java Foundation Classes) –od verze 1.2 –javax.swing a další podbalíky

3 Look and feel swingových komponent Aplikace s GUI napsané v Javě pomocí knihovny Swing mohou mít různý vzhled Java na Windows standardně umožňuje tyto : – MetalLookAndFeel –WindowsLookAndFeel –MotifLookAndFeel Existují i vzhledy dodávané dalšími dodavateli

4 Look and feel swingových komponent MetalLookAndFeelMetalLookAndFeel s rámem Winows XP

5 MotifLookAndFeelWindowsLookAndFeel Look and feel swingových komponent

6 Knihovna NimrodKnihovna Nimrod + Windows XP

7 Nastavení vzhledu aplikace UIManager.setLookAndFeel( ); "com.sun.java.swing.plaf.motif.MotifLookAndFeel" "javax.swing.plaf.metal.MetalLookAndFeel" "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" UIManager.getCrossPlatformLookAndFeelClassName() UIManager.getSystemLookAndFeelClassName () JFrame.setDefaultLookAndFeelDecorated(true); java -Dswing.defaultlaf = com.sun.java.swing.plaf.windows. WindowsLookAndFeel MyApp

8 Správa umístění komponent v okně java.awt.LayoutManager metoda pro nastavení umístění setLayout() Druhy rozložení –java.awt.FlowLayout –java.awt.GridLayout –java.awt.BorderLayout –javax.swing.BoxLayout –javax.swing.SpringLayout –java.awt.GridBagLayout –java.awt.CardLayout

9 FlowLayout Implicitní rozložení pro JPanel Komponenty v upřednostňované velikosti jsou řazeny do řádek. Pořadí je určeno pořadím vložení metodou add(). Zarovnání komponent a mezery mezi nimi je možno určit v konstruktoru, např. zarovnání vpravo a mezery 10 pixelů. FlowLayout(FlowLayout.RIGHT, 10, 10)

10 BorderLayout Implicitní rozložení pro JFrame a JDialog. Plocha rozdělena na 5 částí –PAGE_START (NORTH) –LINE_START (WEST) –CENTER –LINE_END (EAST) –PAGE_END (SOUTH) Při vkládání komponenty určujeme umístění druhým parametrem metody add() např. add(komponenta, BorderLayout.LINE_START) Neuvedení druhého parametru znamená umístění komponenty do oblasti CENTER V každé části je pouze jedna komponenta

11 BorderLayout Komponenty v horní a dolní oblasti se zobrazují v upřednostňované výšce a šířce podle velikosti okna. Komponenty v levé a pravé oblasti se zobrazují v upřednostňované šířce a výšce podle velikosti okna. Komponenta ve středu zabírá celý zbytek. Pokud je okno malé zmenšuje se tato komponenta. V konstruktoru můžeme určit mezery mezi komponentami.

12 GridLayout V konstruktoru určujeme počet řádků a sloupců a mezery mezi komponentami. Komponenty jsou všechny stejně velké, rozměry se řídí velikostí okna. Pořadí je určeno pořadím vkládání metodou add().

13 BoxLayout Uspořádání komponent do jednoho řádku či jednoho sloupce. Toto rozvržení používá maximální velikost komponent. Konstruktor BoxLayout(kontejner,BoxLayout.Y_AXIS) Zarovnání komponenty je určeno nastavením vlastnosti komponenty pomocí metod setAligmentX() a setAligmentY() Pro vytváření mezer mezi komponentami slouží třída javax.swing.Box.

14 Box prázdná oblast mezi komponentami –createRigidArea() odtlačení komponent co nejdál od sebe –createVerticalGlue() –createHorizontalGlue()

15 SpringLayout Pracuje na základě popisu vzdáleností mezi jednotlivými komponentami

16 SpringLayout layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.WEST, contentPane); layout.putConstraint(SpringLayout.NORTH, label, 5, SpringLayout.NORTH, contentPane); layout.putConstraint(SpringLayout.WEST, textField, 5, SpringLayout.EAST, label); layout.putConstraint(SpringLayout.NORTH, textField, 5, SpringLayout.NORTH, contentPane); layout.putConstraint(SpringLayout.EAST, contentPane, 5, SpringLayout.EAST, textField); layout.putConstraint(SpringLayout.SOUTH, contentPane, 5, SpringLayout.SOUTH, textField);

17 GridBagLayout Složitý, ale velmi flexibilní. Jedná se o tabulku s těmito vlastnostmi –určujeme umístění v tabulce –jedna komponenta může zabírat více buněk –pro každou komponentu můžeme nastavit její vlastnosti –pro každý řádek i sloupec můžeme určit výšku a šířku

18 GridBagLayout Jednoduchý konstruktor GridBagLayout() Pro každou vloženou komponentu existuje instance třídy GridBagConstraints() Vložení komponenty pak probíhá následovně GridBagLayout gbl = new GridBagLayout(); getContentPane().setLayout(gbl); GridBagConstraints omezeni = GridBagConstraints(); getContentPane().add(komponenta1,omezeni);

19 Kombinování rozložení, panely V jedné instanci třídy JFrame může být nastaven jen jeden správce rozložení Komponentou však nemusí být přímo aktivní prvek GUI, ale instance třídy JPanel. Každý panel (instance třídy JPanel) obsažený v okně může mít nastaveno jiné rozložení. Panel může obsahovat další panely atd.

20 Skládání panelů s různým rozložením komponent

21 BoxLayout X FlowLayout BoxLayout Y FlowLayout BorderLayout

22 Hierarchie komponent (část)

23 JFrame – okno aplikace

24 Události v GUI v Javě ActionEvent AdjustmentEvent ComponentEvent ContainerEvent FocusEvent ItemEven t KeyEvent MouseEvent MouseMotionEvent TextEvent WindowEvent ChangeEvent a další

25 Obsluha událostí Ke každému typu události existuje rozhraní –ActionEvent - ActionListener –WindowEvent - WindowListener K rozhraní s více než jednou metodou existuje třída Adapter implementující všechny metody rozhraní jako prázdné –WindowListener – WindowAdapter Třídy událostí a jejich listenery a adaptery jsou ve dvou balíčcích –java.awt.event –javax.swing.event

26 Obsluha událostí Každá komponenta má metodu či metody addXxxListener pro určení jaké události sleduje (existuje i metoda removeXxxListener) Jedna komponenta může sledovat více druhů událostí a několik komponent může mít přiřazenou stejnou reakci na událost Pro obsluhu události se používají vnitřní třídy.

27 Obsluha událostí – průběh volání metod

28 První jednoduchá aplikace

29 Kód třídy Start – spuštění aplikace public class Start { public static void main(String[] args) { GUI grafika = new GUI(); grafika.setVisible(true); }

30 © Jarmila Pavlíčková, KIT, http://kit.vse.cz/ import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class GUI { private JFrame okno; private JButton tlacitko; private JLabel navesti; private int pocet = 0; private class ObsluhaTlacitka implements ActionListener { public void actionPerformed(ActionEvent arg0) { pocet++; navesti.setText("Tlačítko bylo stisknuto " + pocet + " krát"); } public GUI() { okno = new JFrame(); okno.setTitle("Jednoducha aplikace"); okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); okno.getContentPane().setLayout(new FlowLayout()); tlacitko = new JButton("tlačítko"); tlacitko.addActionListener(new ObsluhaTlacitka()); okno.add(tlacitko); navesti = new JLabel("Tlačítko bylo stisknuto " + pocet + " krát"); okno.add(navesti); okno.pack(); } public void setVisible(boolean zobrazit) { okno.setVisible(zobrazit); } private JFrame okno; private JButton tlacitko; private JLabel navesti; private int pocet = 0; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; private class ObsluhaTlacitka implements ActionListener { public void actionPerformed(ActionEvent arg0) { pocet++; navesti.setText("Tlačítko bylo stisknuto " + pocet + " krát"); } okno = new JFrame(); okno.setTitle("Jednoducha aplikace"); okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); okno.getContentPane().setLayout(new FlowLayout()); tlacitko = new JButton("tlačítko"); tlacitko.addActionListener(new ObsluhaTlacitka()); okno.add(tlacitko); navesti = new JLabel("Tlačítko bylo stisknuto " + pocet + " krát"); okno.add(navesti); okno.pack(); public void setVisible(boolean zobrazit) { okno.setVisible(zobrazit); }

31 Obsluha události – anonymní vnitřní třída ………. tlacitko = new JButton("tlačítko"); tlacitko.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { pocet++; navesti.setText("Tlačítko bylo stisknuto " + pocet + " krát"); } ); okno.add(tlacitko); ……….

32 Použité zdroje a literatura Developer Resources for Java Technology [online]. c2010 [cit. 2010-04-27]. Dostupné z WWW: http://java.sun.com PAVLÍČKOVÁ, Jarmila; PAVLÍČEK, Luboš. Úvod do Javy. Praha : Nakladatelství Oeconomica, 2005. 227 s. ISBN 802450963. BUCHALCEVOVÁ, Alena, PAVLÍČKOVÁ, Jarmila, PAVLÍČEK, Luboš. Základy softwarového inženýrství – materiály ke cvičení. 1. vyd. Praha : Oeconomica, 2007. 222 s. ISBN 978-80-245-1270-9

33 Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Tato prezentace byla vytvořena v rámci projektu OBZORY Autor: Ing. Jarmila Pavlíčková Předmět: seminář Java Datum: 27.4.2010


Stáhnout ppt "Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY GUI v Javě úvod."

Podobné prezentace


Reklamy Google