Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Swing Java Wykład 8 mgr inż. Michał Misiak.

Podobne prezentacje


Prezentacja na temat: "Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Swing Java Wykład 8 mgr inż. Michał Misiak."— Zapis prezentacji:

1 Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Swing Java Wykład 8 mgr inż. Michał Misiak

2 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Plan wykładu Look and Feel Rozszerzenia Java Swing Wykorzystanie map w aplikacjach Netbeans 6.0 Google Android

3 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Możliwości Java Swing Aplikacja z Java Sun Tutorial prezentująca możliwości Java Swing. Aplikacja zawiera kod dzięki czemu można podejrzeć wykonanie poszczególnych elementów. Źródło: Java Web Start: http://java.sun.com/products/jfc/jws/SwingSet2.jnlphttp://java.sun.com/products/jfc/jws/SwingSet2.jnlp

4 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Look and Feel Możliwość definiowania wyglądu i zachowania aplikacji niezależnie od platformy Użycie l’n’f pozwala skupić się programiście na logice aplikacji oferując zbiór różnych wyglądów Swing pozwala na stosowanie l’n’f dzięki podzieleniu JComponent na dwie cześci:  podklasa JComponent  i powiązana klasa ComponentUI. ComponentUI jest rzadko używany przez programistów i standardowo jest dziedziczony z JComponent. Odrysowanie komponentu delegowane jest do UI. Przygotowanie l’n’f wiąże się z implementacją dla każdego komponentu Swing odpowiedniej delegaty UI. Np. dla JTabbedPane jest delegata: MetalTabbedPaneUI

5 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Look and Feel (2) CrossPlatformLookAndFeel – jest to "Java L&F" zwany również „Metal”. Wygląda tak samo na wszystkich platformach. Jest to cześć Java API (javax.swing.plaf.metal) i jest standardowo ustawiany w przypadku braku wyboru innych preferencji. Systemowy LookAndFeel – aplikacja używa natywnego L&F dla systemu, na którym jest uruchomiona. Systemowy L&F jest określany w momencie uruchomienia aplikacji. Synth – jest to bazowy L&F do tworzenia własnych L&F z wykorzystaniem XML Multiplexing – L&F, który składa się z wielu L&F przypisanych różnym komponentom w tym samym czasie.

6 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Ustawianie L&F Ustawienie L&F powinno się odbywać jako pierwsze W momencie tworzenie danego komponentu, komponent pyta się UI manager o delegatę L&F, która implementuje wygląd komponentu Ustawienie L&F realizowane jest w następującej metodzie:  UIManager.setLookAndFeel() L&F może być również wyspecyfikowany w linii poleceń przy uruchamianiu programu:  ava -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel MyApp Zmiana L&F. Powinna zostać wywołana poniższa metoda na jednym z tzw. top-level komponentów:  UIManager.setLookAndFeel(lnfName);  SwingUtilities.updateComponentTreeUI(frame);  frame.pack();

7 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Tematy w L&F Tematy pozwalają w łatwy sposób modyfikować kolory oraz czcionki L&F. Np. dla L&F Metal można wybrać następujące tematy:  DefaultMetal,  Ocean,  Test

8 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Synth Look and Feel Modyfikacja istniejących L&F lub pisanie własnego jest trudnym zadaniem Do łatwego tworzenia własnych L&F może być użyty pakiet javax.swing.plaf.synth L&F może być tworzony po przez programowanie lub w pliku XML Z synth tworzony jest de facto wygląd, natomiast zachowanie nadaje synth

9 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Przykład modyfikacji synth Synth dostarcza wszystkie ComponentUI Programista ma określić wyłączenie w jaki sposób komponent jest rysowany Synth operuje na poziomie niższym niż komponent na poziomie tzw. „regionów” Źródło: http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/synth.html SynthLookAndFeel laf = new SynthLookAndFeel(); laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class); UIManager.setLookAndFeel(laf); Przykład: Rozkład Regionów dla JScroll

10 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Modyfikacja Synth w XML i w programie class MojaFabrStylow extends SynthStyleFactory { public SynthStyle getStyle(JComponent c, Region id) { if (id == Region.BUTTON) { return buttonStyle; } else if (id == Region.TREE) { return treeStyle; } return defaultStyle; } SynthLookAndFeel laf = new SynthLookAndFeel(); UIManager.setLookAndFeel(laf); SynthLookAndFeel.setStyleFactory(new MyStyleFactory()); W pliku XMLW kodzie programu Uwaga! Więcej na temat tworzenia własnych L&F z Synth pod linkiem: http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/synth.html

11 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Zaawansowane l’n’f: substance Przykładowy l’n’f: Substance. Źródło: https://substance.dev.java.net/

12 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Inne funkcjonalności Java Swing Desktop – możliwa interakcję aplikacji ze standardowymi aplikacjami skojarzonymi ze specyficznymi typami plików na komputerze, na którym została ona uruchomiona Actions – możliwość koordynacji stanu i obsługi zdarzeń dla większej liczby komponentów generujących zdarzenia actions. Timer – możliwość implementacji wątku, który wykonuje akację cyklicznie z jakimś opóźnieniem Focus – możliwość personalizacji sposobu ustawiania fokusu w aplikacjach w celu dokonania specyficznego przejścia po polach, walidacji, etc… Key Bindings – możliwość ustawienia sposobu reakcji na klawiaturę Wykorzystanie System Tray

13 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Integracja z aplikacjami Java 6 umożliwia integrację z aplikacji Javy z aplikacjami natywnymi uwzględniając aspekt wydajności Integracja realizowana jest po przez Java Desktop API (java.awt.Desktop). Dekstop API wyrosło z projektu JDesktop Integration Components (JDIC) Funkcjonalność oferowana przez Java Desktop API  Uruchamianie specyficznej dla systemu przeglądarki ze wskazanym URL  Uruchamianie standardowego klienta poczty elektronicznej  Uruchamianie aplikacji w celu otwarcia, edycji, wydrukowania plików skojarzonych z tymi aplikacjami Dostępność Desktop API: isDesktopSupported() Jeśli Dekstop API wspierane można pobrać obiekt Desktop: getDesktop()

14 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Java Desktop API Akcje które mogą być realizowane przez Java Dekstop API:  BROWSE  MAIL  OPEN  EDIT  PRINT Różne aplikacje mogą być zarejestrowane dla powyższych akcji Obsługa akcji BROWSE private void onLaunchBrowser(ActionEvent evt) { URI uri = null; try { uri = new URI(txtBrowserURI.getText()); desktop.browse(uri); } catch(IOException ioe) { //TO DO Exception }catch(URISyntaxException use) { //use.printStackTrace(); } Źródło: http://java.sun.com/docs/books/tutorial/uiswing/misc/desktop.html

15 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 System Tray System Tray – obszar w którym mogą być uruchamiane aplikacje. Obszar ten jest przez nie współdzielony Np. w Windows jest to System Tray odnosi się do paska, a w GNOME rozumiany jest jak obszar powiadomień (notification area). System Tray wprowadzony w Java 6 obsługiwany przez pakiet java.awt.SystemTray  dostęp do System Tray po przez metodę: SystemTray.getSystemTray()  Zalecane wywołanie metody isSupported() Dodawanie/Usuwanie ikon do Tray:  add(java.awt.TrayIcon)

16 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 System Tray (2) Możliwość wyświetlenia:  podpowiedzi (Text ToolTip)  pop-up menu  dymku z wiadomością Dostępny jest szereg nasłuchiwaczy i zdarzeń generowanych dla myszki Część zdarzeń wykonywana jest samoczynnie.  kliknięcie na ikonę powoduje rozwinięcie pop-up menu.  podwójne kliknięcie powoduje wygenerowanie zdarzenia ActionEvent final PopupMenu pop-up = new PopupMenu(); final TrayIcon trayIcon = new TrayIcon( createImage(„ikona.gif", „ikona z tray")); final SystemTray tray = SystemTray.getSystemTray(); //tworznie menu MenuItem Item1 = new MenuItem(„O aplikacji"); pop-up.add(Item1) trayIcon.setPopupMenu(pop-up); Więcej! http://java.sun.com/docs/books/tutorial/uiswing/misc/systemtray.html

17 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Splash Screen Jest to ekran pojawiający się przeważnie w następujących sytuacjach:  Wskazanie, że aplikacja uruchamia się  Prezentacja informacji, która powinna być wyświetlona jednokrotnie Ze względu na cel w jakim stworzono Splash Screen opóźnienie związane z jego uruchomieniem powinno być minimalne, ale za nim zostanie wyświetlony wymagane jest uruchomienie JVM, załadowanie Swing i AWT Java 6 pozwala na wyświetlenie SS za nim zostanie uruchomiona JVM Możliwość wyświetlenia obrazu w formacie: gif, jpg, png z przeźroczystością i animacją

18 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Splash Screen

19 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Obsługa Splash Screen Funkcjonalność oferowana w klasie SplashScreen:  Zamknięcie ekranu  Zmiana wyświetlanej grafiki  Uzyskanie pozycji i wielkości obrazu  Rysowanie na SS Brak możliwości utworzenia instancji obiektu przez aplikację. Uzyskanie dostępu do SS po przez metodę:  getSplashScreen() final SplashScreen splash = SplashScreen.getSplashScreen(); if (splash == null) { System.out.println( "SplashScreen.getSplashScreen() " + " zwrocil null"); return; } Graphics2D g = splash.createGraphics(); if (g == null) { System.out.println("g is null"); return; }

20 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Wykorzystanie map w aplikacjach Wzbogacenie aplikacji o przetwarzanie danych geograficznych Popularyzacja Google Maps w technice AJAX Mapy w Swing – projekt open source o nazwie JXMapViewer rozwijany w Swinglabs (http://www.swinglabs.org/) Organizacje dostarczające mapy:  NASA's Blue Marble satellite (http://earthobservatory.nasa.gov/Newsroom/BlueMarble/)  OpenStreetMap.org (http://www.openstreetmap.org/)

21 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Budowa i użycie JXMapViewer JXMapViewer jest to JPanel, który wie jak załadować mapy z serwera z obrazami, jak łączyć obrazy, przekształcać współrzędne geograficzne, etc … JXMapViewer znajduje się w wersji 6 Netbeans. Netbeans 6 dostarcza również kilka nowych funkcjonalności ułatwiających tworzenie takiej aplikacji. Bardziej rozbudowaną funkcjonalność posiada JXMapKit (suwaki do manipulowania mapą) JXMapKit posiada zestaw Properties pozwalający na modyfikację poszczególnych elementów (suwaki, podgląd mapy, etc…)

22 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Użycie JXMapKit Modyfikacja lokalizacji – przesuwanie mapy: setAddressLocation() Przykład ustawienia lokalizacja na Łódź:  jXMapKit1.setAddressLocation(ne w GeoPosition(41.881944,- 87.627778)); GeoPosition przyjmuje jako parametr wartości szerokości i wysokości geograficznej Pobranie określonej lokalizacji na mapie przy pomocy metody:  getCenterPosition() public void addWaypoint() { //tworzenie zbioru punktow Set waypoints = new HashSet (); waypoints.add(new waypoint(41.881944,-87.627778)); waypoints.add(new Waypoint(40.716667,-74)); //WaypointPainter odrysowuje punkty WaypointPainter painter = new WaypointPainter(); painter.setWaypoints(waypoints); jXMapKit1.getMainMap(). setOverlayPainter(painter); }

23 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Przeładowanie standardowego sposobu rysowania punktów Painter.setWaypoints(waypoints); painter.setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g, JXMapViewer map, Waypoint wp) { g.setColor(Color.RED); g.drawLine(-5,-5,+5,+5); g.drawLine(-5,+5,+5,-5); return true; } }); jXMapKit1.getMainMap().setOverlayPainter(painter); Źródło: http://today.java.net/pub/a/today/2007/10/30/building-maps-into-swing-app-with-jxmapviewer.html

24 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Przykład

25 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Android – projekt Google Mobile Phone http://code.google.com/android/adc.html

26 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 Co dalej … Aplikacje wielowątkowe Animacje Prezentacja Java w Telekomunikacji Aplikacje sieciowe Wykorzystanie XML i baz danych


Pobierz ppt "Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Swing Java Wykład 8 mgr inż. Michał Misiak."

Podobne prezentacje


Reklamy Google