1 / 44

Tworzenie GUI w Javie

Tworzenie GUI w Javie. Swingujące programowanie. Plan. Wprowadzenie Podejścia do budowy GUI w Javie Budowa GUI przy pomocy Swinga Wprowadzenie do JFC - Swinga Przegląd komponentów graficznych biblioteki oraz sposób zarządzania Grafika. Swing. JFC udostępniane z JRE (javax.swing.*)

eytan
Download Presentation

Tworzenie GUI w Javie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tworzenie GUI w Javie • Swingujące programowanie

  2. Plan • Wprowadzenie • Podejścia do budowy GUI w Javie • Budowa GUI przy pomocy Swinga • Wprowadzenie do JFC - Swinga • Przegląd komponentów graficznych biblioteki oraz sposób zarządzania • Grafika

  3. Swing • JFC udostępniane z JRE (javax.swing.*) • Kiedyś mało wydajny (polepszoneod Java 1.4) • Napisane w Javie (AWT – Java / C) • Niezależne od platformy Swing java.awt sun.awt Operating system

  4. SWT • Zależne od platformy (jest implementacja dla większości platform) • Używa natywnych kontrolek systemowych (JNI) • Tylko komponenty które nie są wspierane przez dany system operacyjny zaimplementowane • Biblioteka wyższego poziomu JFace JFace SWT JNI Windowing system Operating system

  5. SWT vs. Swing • Niezależne • Różnie to bywa • Look and Feel • Używa Observer Pattern • Manager rozmieszczenia • Zależne od platformy • Wydajne • Używa Observer Pattern • Manager rozmieszczenia JFace SWT Swing java.awt JNI sun.awt Windowing system Operating system Operating system

  6. Plan • Wprowadzenie • Podejścia do budowy GUI w Javie • Budowa GUI przy pomocy Swinga • Wprowadzenie do JFC - Swinga • Przegląd komponentów graficznych biblioteki oraz sposób zarządzania • Grafika

  7. Java Foundation Classes Zawiera: • The Swing Components • Pluggable Look and Feel Support • Accessibility API • Java 2D API (Java 2 Platform only) • Drag and Drop Support (Java 2 Platform only)

  8. Podejście MVC • Model – dane stanu konkretnego komponentu • View – jak komponent jest widziany na ekranie • Controller – jak występowanie zdarzeń łączy dwa powyższe http://www.tol.oulu.fi/kurssit/ot3/Lectures/OT3_L3.html

  9. Swing hierarchia Kontenery najwyższego poziomu JFrame JApplet JDialog JWindow

  10. Swing hierarchia http://www.particle.kth.se/~fmi/kurs/PhysicsSimulation/Lectures/07A/swingDesign.html

  11. Wzorzec Composite

  12. Wzorzec Composite http://www.javaworld.com/javaworld/jw-09-2002/jw-0913-designpatterns.html

  13. Kontenery najwyższego poziomu • Każdy program napisany w Swingu, musi posiadać przynajmniej jeden kontener najwyższego poziomu • JFrame ( pojedyncze okno aplikacji) • JDialog (okienko dialogowe) • JApplet (dla apletów)

  14. Kontenery najwyższego poziomu www.java.sun.com

  15. Hello world - JFrame Eclipse – przykład (1)

  16. Menu • Specjalna warstwa (Menu Bar) • Menu składane z „klocków” www.java.sun.com

  17. Menu Eclipse – przykład (2)

  18. Obsługa akcji • Obsługa zdarzeń oparta jest na wzorcu Observer/Listener • Każdy komponent może być obserwowany przez wielu obserwatorów • Każdy komponent może obsługiwać wiele typów słuchaczy (np. zdarzenia obsługi myszy, klawiatury, zmiany struktury itd.)

  19. Wzorzec observer Następny proszę! Lalaaaalalaa! Dziękujemy Proszę nie dzwonić, My zadzwonimy... Broadway

  20. Wzorzec observer http://www.javaworld.com/javaworld/jw-03-2003/jw-0328-designpatterns.html

  21. Swing/AWT & Observer menuItem.addActionListener(new ActionListener(){ publicvoid actionPerformed(ActionEvent e) { // tutaj kod obslugi System.out.println(”Wybrano mnie”); } }); JMenuItem Listeners [menuItem]

  22. Swing/AWT & Observer JMenuItem Event Listeners [menuItem] Event menuItem.addActionListener(new ActionListener(){ publicvoid actionPerformed(ActionEvent e) { // tutaj kod obslugi System.out.println(”Wybrano mnie”); } });

  23. Przykłady słuchaczy AWT Event listener interfaces in java.awt.events • ActionListener • AdjustmentListener • AWTEventListener • ComponentListener • ContainerListener • FocusListener Focus • HierarchyBoundsListener Hierarchy • HierarchyListener Hierarchy • InputMethodListener • ItemListener • KeyListener • MouseListener • MouseMotionListener • MouseWheelListener • TextListener • WindowFocusListener • WindowListener • WindowStateListener

  24. Przykłady słuchaczy Swing Event listener interfaces in javax.swing.event • AncestorListener • CaretListener • CellEditorListener • ChangeListener • DocumentListener • HyperlinkListener • InternalFrameListener • ListDataListener • ListSelectionListener • MenuDragMouseListener • MenuKeyListener • MenuListener • MouseInputListener • PopupMenuListener • TableColumnModelListener • TableModelListener • TreeExpansionListener • TreeModelListener • TreeSelectionListener • TreeWillExpandListener • UndoableEditListener

  25. Menu Eclipse – przykład (3)

  26. Look & Feel • W JFC istnieje możliwość zmiany sposobu wyświetlania kontrolek • Domyślny wygląd to Metal / Aqua • Można wybrać wygląd systemu operacyjnego • W JFC nie korzystano z kontrolek natywnych systemu (zmienione podejście ostatnio)

  27. Look & Feel Eclipse – przykład (4)

  28. Podstawowe komponenty • JLabel • JButton • JCheckBox • JRadioButton • JPanel • JSlider • JColorChooser • JTextField • JList • JScrollPane • JTree • … Eclipse – przykład (5)

  29. Layout Managers • Służą do automatycznego rozkładania komponentów • Działają według określonych zasad • Przykłady • FlowLayout • BorderLayout • GridLayout • GridBagLayout • CardLayout

  30. FlowLayout • Układa komponenty od lewej do prawej w kolejnych wierszach Eclipse – przykład (6)

  31. BorderLayout • Każdy komponent umieszczany jest w jednym z pięciu rejonów: • na dole, • na górze, • po lewo, • po prawo • po środku • Komponenty dodawane do kontenera bez wskazania rejonu domyślnie dodawane są po środku • Dodanie nowego komponentu do rejonu już posiadającego zawartość spowoduje jej podmianę Eclipse – przykład (7)

  32. GridLayout • GridLayout układa komponenty w komórkach siatki, której rozmiar określamy przy pomocy parametrów konstruktora. • Komponenty zajmują kolejne komórki zgodnie z kolejnością dodawania. Eclipse – przykład (8)

  33. GridBagLayout • Zaawansowana możliwość układania komponentów, wpisywanych w siatkę Eclipse – przykład (9)

  34. CardLayout • Komponenty umieszczane jak talia kart Eclipse – przykład (10)

  35. Okna dialogowe wejścia/wyjścia Różne rodzaje dialogów, udostępnianych przez klasę JOptionPane Tworzenie okien następuje poprzez wywołanie statycznych metod klasy JOptionPane. Metody te jako wynik zwracają kod wybranego przycisku albo wartość wprowadzanych do nich danych.

  36. Plan • Wprowadzenie • Podejścia do budowy GUI w Javie • Budowa GUI przy pomocy Swinga • Wprowadzenie do JFC - Swinga • Przegląd komponentów graficznych biblioteki oraz sposób zarządzania • Grafika

  37. Rysowanie na komponencie • Każdy komponent ma metodę paintComponent, w której można rysować • Można ją przeciążyć i zaimplementować własne rysowanie • W metodzie dostępna jest zmienna typu Graphics, przekazywana jako parametr • Możemy zrzutować ją na Graphics2D, aby otrzymać bardziej rozbudowany wachlarz możliwości

  38. Rysowanie na komponencie • Przydatne metody • // Ustawienia ołówka • g.setColor(someColor); • g.setFont(someLimitedFont); • // Rysowanie kształtów • g.drawString(...); • g.drawLine(...) • g.drawRect(...); // outline • g.fillRect(...); // solid • g.drawPolygon(...); // outline • g.fillPolygon(...); // solid • g.drawOval(...); // outline • g.fillOval(...); // solid

  39. Rysowanie na komponencie • Przydatne metody • g2d.setPaint(fillColorOrPattern); • g2d.setStroke(penThicknessOrPattern); • g2d.setComposite(someAlphaComposite); • g2d.setFont(anyFont); • g2d.translate(...); • g2d.rotate(...); • g2d.scale(...); • g2d.setTransform(someAffineTransform); • g2d.draw(s); // outline • g2d.fill(s); // solid

  40. Przekształcenia http://www.glyphic.com/transform/plugin/1intro.html

  41. Przekształcenia http://www.glyphic.com/transform/plugin/4app.html

  42. Przekształcenia http://www.glyphic.com/transform/plugin/7wiggly.html

  43. Przykład Eclipse – przykład (11)

  44. Swing Dziękuje za uwagę http://java.sun.com/docs/books/tutorial/uiswing/components/examples/index.html

More Related