Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałRenata Romanowska Został zmieniony 8 lat temu
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.