Home >Documents >U¾ivatelsk rozhran­ 6. cvien­

U¾ivatelsk rozhran­ 6. cvien­

Date post:30-Dec-2015
Category:
View:32 times
Download:3 times
Share this document with a friend
Description:
Uživatelská rozhraní 6. cvičení. Úvod do Swing GUI toolkit. AWT Abstract Window Toolkit (import java.awt.*) Od počátku Javy, základní stavební kameny pro vytváření komplexních UI. Intenzivní využívání návrhových vzorů (vychází z Model-View-Controler). Swing (import javax.swing.*) - PowerPoint PPT Presentation
Transcript:
  • Uivatelsk rozhran 6. cvien

  • vod do Swing GUI toolkitAWT Abstract Window Toolkit (import java.awt.*)Od potku Javy, zkladn stavebn kameny pro vytven komplexnch UI. Intenzivn vyuvn nvrhovch vzor (vychz z Model-View-Controler).Swing (import javax.swing.*)Od Javy 2, roziuje a stav na AWT, obsahuje spoustu novch komponent, standardn dialogov okna, Look & Feel, Tak vyuvn nvrhovch vzor (vychz z Model-View-Controler) .Vzhled i chovn prvk je implementovno v Jav.Management rozloen komponent 8 typ zkladnch layout, ale existuje mnoho dalch.Soust JFC (Java Foundation Classes).Podpora pro datov penosy (Cut/Copy/Paste, Drag & Drop).Obsahuje Undo Framework (podpora Undo a Redo operac).Internacionalizace, Accesibility (zpstupnn obsahu zrakov postienm).Rovn multiplatformn, alternativou je nap. SWT od IBM.

  • PrerekvizityJava SE Development Kit (JDK)http://java.sun.com/javase/downloads/index.jsp

    ManulySpecifikace API:http://java.sun.com/javase/6/docs/api/Tutorily:http://java.sun.com/docs/books/tutorial/index.html

    EditoryNetBeans, Eclipse, PSPad,

  • Zkladn informace o GUI v JavKad komponenta viditeln na obrazovce mus bt potomkem java.awt.ComponentJmna vizuln komponenty z balku java.swing zanaj psmenkem J (JComponent, JFrame, JFileChooser, )Dodruje se zde tm vude nvrhov vzor MVC, take i tlatko m svj model java.swing.ButtonModelExistuje technologie JavaBean, kter je ureny pedevm (ale ne jenom) pro vytven grafickch komponent.

  • Ukzky monost swing GUI\demo\jfc\SwingSet2\

    https://swingset3.dev.java.net/ (online verze Java WebStart)

  • Nejpouvanj komponentyJFrame (zbyl dv jsou JDialog a JApplet)Okno aplikace, obsahuje standardn prvky (lze je vypnout),komunikuje s OS.Kontejnerem pro dal komponenty (nap. JButton, JLabel, JPanel) nen pmo JFrame, ale automaticky vytvoen ContentPane (getContentPane()).

    Title barMin, max, zavtContentPane

  • Dal komponentyKontejnery:JPanel, JTabbedPane, JSplitPane, JScrollPane, Usnaduj umsovn dalch komponent.

    Atomick komponenty:JLabel, JButton, JComboBox, JTextField, JTable,Umouj interakci s uivatelem a zobrazuj informace.

  • Postup pi pouit obecn komponenty1. Instanciace.JButton btn = new JButton(tlatko);2. Konfigurace.//vtinou nen teba btn.setPrefferedSize(new Dimension(100, 20));btn.setSetText(TLATKO);3. Jedn-li se o kontejner, vloen potomk.4. Nejedn-li se o JFrame, vloen komponenty do kontejneru (nap. JContentPane, JPanel).panel.add(btn);5. Registrace poslucha.btn.addXXXListener(listener);

  • Zdroj udlostObjekt, kter generuje udlostiSpravuje seznam registrovanch poslucha

    Poslucha (listener)Objekt, kter chce bt o udlosti informovnMus bt registrovn u zdroje udlostMus implementovat dohodnut rozhranUdlosti (1)

  • Udlosti (2)Zdroj udlostRegistrovan posluchaiPosluchaPosluchaPosluchaaddEventListenerregistraceInformace o udlostiEventObject evznik udlostinastala udlost (e)

  • Poslucha se zaregistruje u zdroje udlost (nap. u tlatka, na jeho stisknut ek)Uivatel stiskne tlatko vznikne udlostZdroj udlosti (tlatko) projde seznam registrovanch poslucha a kadmu z nich oznm vznik udlosti:Zavol dohodnutou metodu rozhran posluchaeMetod ped informace o udlosti (podtda java.util.EventObject)Zpracovn udlost

  • Udlosti: Model Event Listener Zpracovn udlostaddFooListenerAddFooListenerfireSomethingHappendsomethingHappendsomethingHappend

  • Objekt udlostimus ddit z java.util.EventObjectM se jmenovat EventMus mt konstruktor s alespo jednm parametrem (zdroje udlost)Rozhran posluchae (ListenerType)Mus ddit z java.util.EventListenerM se jmenovat ListenerJednotliv metody by mnli mt jeden parametr (udlost)Maj vracet voidZdroj udlost(JavaBean) mus mt metody public void add( listener)throws java.util.TooManyListenersException;public void remove( listener)Udlosti - Shrnut

  • GUI udlostiBalk java.awt.event a java.swing.eventKad komponenta podporuje notifikaci nsledujc poslucha a mnoha dalchaddComponentListener, addMouseListener addMouseMotionListener, addKeyListenerAdaptry slou k tomu aby nebylo teba implementovat vechny metody, kdy potebujeme obslouit jen jednu.Adaptry implementuj vechny metody jako przdn.KeyAdapter, MouseAdapter, MouseMotionAdapter

  • Ukzka pouit AdaptrutxtOut = new JTextField();txtOut.addMouseListener(new java.awt.event.MouseAdapter() {@Overridepublic void mouseClicked(java.awt.event.MouseEvent e) {//udlej nco}});Bez pouit adaptrutxtOut.addMouseListener(new java.awt.event.MouseListener() {public void mouseClicked(java.awt.event.MouseEvent e) {//udlej nco}@Overridepublic void mouseEntered(MouseEvent paramMouseEvent) {}@Overridepublic void mouseExited(MouseEvent paramMouseEvent) {}@Overridepublic void mousePressed(MouseEvent paramMouseEvent) {}@Overridepublic void mouseReleased(MouseEvent paramMouseEvent) {}});

  • Layout ManagementLM ovldaj rozmstn komponent v rmci kontejneru.Pkaz pack() nastav velikost okna tak aby komponenty obsaen v nm mnli pokud mono preferovanou velikost.

    BoxLayoutFlowLayoutGridLayout

    BorderLayoutGridBagLayout

    Null Layout

  • Layout ManagementRozhran java.awt.LayoutManager a java.awt.LayoutManager2, kter je rozenm prvnho.Kad si me vytvoit svj vlastn layout manager sta implementovat jedno z tchto dvou rozhran.Pehled vech td kter implementuj dan rozhran najdete na:http://java.sun.com/javase/6/docs/api/java/awt/LayoutManager.htmlhttp://java.sun.com/javase/6/docs/api/java/awt/LayoutManager2.html

  • FlowLayoutNejjednodu layout, vkld komponenty na dek zleva doprava dokud je na dku msto, pak pokrauje dalm dkem.Kad dek je vycentrovan.d se tzv. preferred size atributem komponenty.Je to vchoz rozloen pro JPanel.

  • BorderLayoutRozdluje kontejner do pti region.Vchoz centrln region je maximalizovan, ostatn zabraj pouze minimln potebnou plochu.Kad region me obsahovat maximln jednu komponentu.Je to vchoz rozloen pro ContentPane (JFrame).Pozor pokud to jde je voln msto pidleno komponentn ve stedu take, pokud bon komponenty nemaj minimln velikost (nap. przdn frame) nebudou vidt.Konstanty: CENTER, WEST, EAST, SOUTH, NORTHPokud pouijete BorderLayout v kontejneru CntentPane okna a nechte okraje voln mete vytvoit toolbar java.swing.JToolBar, kter bude moct pesouvat my na libovolnou stranu okna, bez nutnosti psan njakho specilnho kdu.

  • BoxLayoutad komponenty za sebe do dku (LINE_AXIS) nebo podsebe do sloupce (PAGE_AXIS).Obdoba FlowLayout, ale s vce monostmi.

  • GridLayoutUmsuje komponenty do bunk mky.Kad komponenta vyuije cel prostor buky.Vechny buky maj stejnou velikost.

  • GridBagLayoutJeden z nejkomplexnjch layout.Umsuje komponenty do bunk mky obdobn jako GridLayout.dky i sloupce mohou mt rznou velikost.Komponenta me zabrat vce bunk (rowspan, columnspan).

  • Implicitn sprvce rozvrenPi vytvoen jakhokoliv potomka tdy Container m automaticky peddefinovn i sprvce rozvren.

    JPanel FlowLayoutJFrameBorderLayoutJDialogBorderLayoutJAppletBorderLayoutBoxBoxLayout

  • Specifikace APIDleitou soust programovn bude vyhledn informac o tdch, metodch, konstruktorech, zddnch vlastnostech apod. Proto se snate sptelit na cvien i s API specifikac (http://java.sun.com/javase/6/docs/api/ ).

    Pklad na vlastnosti JButtonhttp://java.sun.com/javase/6/docs/api/javax/swing/JButton.html

  • Specifikace APIKad popis tdy nebo rozhran obsahuje vechny dleit informace o dan td rozhran:Ve kterm balku je tda obsaenaZe kterch td ddSeznam rozhran, kter implementujePodtdyPopisSeznam tdnch promnnch, konstruktor, metodPodrobn popisy pedchozch (argumenty, vyjmky)

  • Praktick lohaPro cvien pouijeme ablonu, na kter se budeme dle seznamovat s komponentami zahrnutmi ve Swing API.

    Design si mete upravit libovoln podle sebe. Pokuste se vyzkouet zkladn prvky, vetn nastaven jejich vlastnost.

  • Praktick loha

  • Pouit tdy JFramepublic class TempConv extends JFrame implements ActionListener {JTextField txtIn;}

    Ovldac prvky, se ktermi budeme pracovat (st jejich stav), deklarujeme zde jako atributy tdy TempConv.Zkladn tda okna aplikace.Slou k registraci poslucha, viz. dle.

  • Zkladn operace v konstruktorupublic TempConv() {super(Pevod teplot);//setMinimumSize(new Dimension(420, 300));setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container content = getContentPane();}

    Zskme kontejner pro ovldac prvky.Nastaven titulku pes konstruktor tdy JFrame.Bez tohoto dku by nedolo po zaven okna k ukonen aplikace.

  • Zpracovn udlost varianta 1public class TempConv extends JFrame implements ActionListener {JButton btn = new JButton(Pevod);btn.addActionListener(this);public void actionPerformed(ActionEvent evt) {// proveden konverze hodnot}}

    Registrace posluchae udlost vyvolanch tlatkem.Reakce na udlost.

  • Zpracovn udlost varianta 2JButton btn = new JButton(Pevod);btn.addActionListener(new ActionListener()public void actionPerformed(ActionEvent evt) {// proveden konverze hodnot});

    Registrace posluchae udlost vyvolanch tlatkem.Reakce na udlost.Oproti pedchoz variant nen problm obslouit vce jak jedno tlatko v okn.

    Doporuovan metoda obsluhy udlost!

  • Obrzekprotected JComponent getImage(){ // ------ cast pro obrazek ------ JPanel panel = new JPanel(); ImageIcon i= new ImageIcon("d:/URO/cv/thermo2.png");// ImageIcon(this.getClass().getResource("thermo2.png"));// pro nacitani obrazku napr. uvnitr JAR souboru JLabel l=new JLabel(i); panel.add(l); return panel; }

  • RadioButtonJRadioButton

    Doporuuji pout spolen se tdou javax.swing.ButtonGroup, kter zajist vytvoen skupiny tlatek, kde me bt vybrnu pouze jedno tlatko.

    http://java.sun.com/docs/books/tutorial/uiswing/components/button.html

  • BordersNajdete je v balku javax.swing.border

    Zajmavost je vy