Wszelkie prawa zastrzeżone. Nieautoryzowane ... · 8 JavaFX 9. Tworzenie graficznych interfejsów...
Transcript of Wszelkie prawa zastrzeżone. Nieautoryzowane ... · 8 JavaFX 9. Tworzenie graficznych interfejsów...
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowychlub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzący: Małgorzata Kulik
Projekt okładki: Studio Gravite / OlsztynObarek, Pokoński, Pazdrijowski, Zaprucki
Grafika na okładce została wykorzystana za zgodą Shutterstock.com
Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/jafx9tMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Kody źródłowe wybranych przykładów dostępne są pod adresem:ftp://ftp.helion.pl/przyklady/jafx9t.zip
ISBN: 978-83-283-3835-7
Copyright © Helion 2018
Printed in Poland.
• Kup książkę• Poleć książkę • Oceń książkę
• Księgarnia internetowa• Lubię to! » Nasza społeczność
Spis treściWstęp ..........................................................................................................................25Rozdział 1. Wiadomości wstępne ....................................................................................27JavaFX ...................................................................................................................................................... 27Cechy JavaFX .......................................................................................................................................... 27Szkielet aplikacji ..................................................................................................................................... 29Metody init() i stop() ............................................................................................................................. 30Metoda start() ......................................................................................................................................... 30Cykl życiowy aplikacji ........................................................................................................................... 31Kończenie pracy aplikacji ...................................................................................................................... 33Wyrażenia lambda ................................................................................................................................. 34Parametry uruchomieniowe ................................................................................................................. 34Wykorzystanie parametrów .................................................................................................................. 36
Rozdział 2. Właściwości i wiązanie danych .......................................................................39Klasyczne ziarenka JavaBean ................................................................................................................ 39Śledzenie zmian właściwości ................................................................................................................. 40
Właściwości indeksowane ............................................................................................................. 41Interfejs Observer i klasa Observable oraz inne sposoby śledzenia zmian ............................. 42Flow API ........................................................................................................................................... 42
Właściwości JavaFX ............................................................................................................................... 42Właściwości R/W ............................................................................................................................ 42Właściwości R .................................................................................................................................. 44Śledzenie zmian właściwości JavaFX ............................................................................................ 45
Śledzenie ważności zmiennej ................................................................................................................ 46Wiązanie zmiennych .............................................................................................................................. 47
Wiązanie jednostronne .................................................................................................................. 47Wiązanie dwustronne .................................................................................................................... 48Wiązanie wysokopoziomowe ........................................................................................................ 50Wiązanie niskopoziomowe ............................................................................................................ 51
Poleć książkęKup książkę
4 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Zapobieganie wyciekom pamięci ......................................................................................................... 52Adaptacja JavaBean do JavaFX Bean ................................................................................................... 53
Tworzenie adaptera ........................................................................................................................ 53
Rozdział 3. Kolekcje .......................................................................................................55ObservableList ........................................................................................................................................ 55
Tworzenie arraylisty ....................................................................................................................... 56Obserwacja zmian w arrayliście .................................................................................................... 56Obserwacja zmian właściwości w arrayliście .............................................................................. 57Inne sposoby tworzenia arraylisty ................................................................................................ 58Tworzenie innych list ..................................................................................................................... 58Inne sposoby tworzenia list ........................................................................................................... 59Czynności wykonywane na listach ............................................................................................... 59
ObservableSet .......................................................................................................................................... 59Tworzenie zbioru ............................................................................................................................ 59Tworzenie innych zbiorów ............................................................................................................ 59Obserwacja zmian w zbiorze ......................................................................................................... 60
ObservableMap ....................................................................................................................................... 61Tworzenie hashmapy ..................................................................................................................... 61Tworzenie innych map .................................................................................................................. 61Obserwacja zmian w hashmapie ................................................................................................... 61
ObservableArray ..................................................................................................................................... 62Tworzenie tablic .............................................................................................................................. 62Obserwowanie tablic ...................................................................................................................... 63Praca z tablicami ............................................................................................................................. 63
Kolekcje jako właściwości ..................................................................................................................... 64SimpleListProperty ......................................................................................................................... 64SimpleSetProperty i SimpleMapProperty ................................................................................... 66
Wiązanie właściwości kolekcji .............................................................................................................. 66Wiązanie referencji do kolekcji ............................................................................................................ 67Wiązanie zawartości kolekcji ................................................................................................................ 67Wiązanie do elementu kolekcji ............................................................................................................ 68Filtrowanie kolekcji ................................................................................................................................ 69Sortowanie kolekcji ................................................................................................................................ 70
Poleć książkęKup książkę
Spis treści 5
Rozdział 4. Okno na scenę ..............................................................................................71Window ................................................................................................................................................... 71
Pokazywanie i ukrywanie okna ..................................................................................................... 71Wymiary okna ................................................................................................................................. 72Położenie okna ................................................................................................................................ 72Informacje o wyświetlaczu ............................................................................................................ 73Właściwość opacity ......................................................................................................................... 74Właściwość focused ........................................................................................................................ 75Właściwość scene ............................................................................................................................ 75Właściwość showing ....................................................................................................................... 75Właściwości okna ............................................................................................................................ 76Dane użytkownika .......................................................................................................................... 76
Stage ......................................................................................................................................................... 76Wielkość okna ................................................................................................................................. 77Styl okna ........................................................................................................................................... 78Właściciel okna ............................................................................................................................... 79Modalność ........................................................................................................................................ 80Tytuł okna ........................................................................................................................................ 82Ikona okna ....................................................................................................................................... 82Zamknięcie okna ............................................................................................................................. 83Metody toTop() i toBack() ............................................................................................................ 83Zmiana rozmiarów okna ............................................................................................................... 83Użycie „dekoracji” okna ................................................................................................................. 84Mocowanie okna ............................................................................................................................. 85Tryb pełnoekranowy ...................................................................................................................... 85showAndWait() .............................................................................................................................. 87
Uwagi ....................................................................................................................................................... 88
Rozdział 5. Obsługa zdarzeń ...........................................................................................89Drzewo ..................................................................................................................................................... 89Drzewo elementów ................................................................................................................................. 90Zdarzenie (Event) ................................................................................................................................... 91Typ zdarzenia (EventType) ................................................................................................................... 92Cel zdarzenia (EventTarget) i uchwyt zdarzenia (EventHandler) .................................................. 92Obieg zdarzeń ......................................................................................................................................... 93
Faza przechwytywania .................................................................................................................... 93Faza bąbelkowania .......................................................................................................................... 94
Poleć książkęKup książkę
6 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Filtry zdarzeń i uchwyty zdarzeń ......................................................................................................... 94Konsumpcja zdarzeń ............................................................................................................................. 95Usuwanie filtrów i uchwytów ............................................................................................................... 96Metody skrótowe .................................................................................................................................... 96Dyspozytor zdarzenia EventDispatcher .............................................................................................. 97Łańcuch dyspozytorów EventDispatchChain .................................................................................... 97Zdarzenia okien WindowEvent ............................................................................................................ 97
Typy zdarzeń ................................................................................................................................... 97Dodawanie uchwytów i filtrów zdarzeń ...................................................................................... 98Usuwanie uchwytów i filtrów zdarzeń ......................................................................................... 99Zestawienie właściwości uchwytów .............................................................................................. 99Metody skrótowe .......................................................................................................................... 100Metoda fireEvent(Event) ............................................................................................................. 100
Zdarzenia wejścia InputEvent ............................................................................................................ 100Zdarzenia myszy MouseEvent .................................................................................................... 101Klasa MouseDragEvent ................................................................................................................ 107Zdarzenia klawiatury KeyEvent .................................................................................................. 110
Inne zdarzenia ....................................................................................................................................... 112
Rozdział 6. Wchodzimy na scenę ...................................................................................113Scena (Scene) ........................................................................................................................................ 113Scenograf ............................................................................................................................................... 113Elementy 2D i 3D ................................................................................................................................. 114Kursor .................................................................................................................................................... 114
Typy kursora .................................................................................................................................. 114Ustawianie kursora dla sceny ...................................................................................................... 115Ustawianie kursora dla węzła ...................................................................................................... 115Własny kursor ............................................................................................................................... 116
Trochę więcej o scenie ......................................................................................................................... 116Kombinacje klawiszy .................................................................................................................... 116Dane użytkownika ........................................................................................................................ 117Migawka ze sceny .......................................................................................................................... 118Arkusze CSS ................................................................................................................................... 120
Rozdział 7. Rozplątywanie węzłów ...............................................................................121Klasa Node — schemat dziedziczenia ............................................................................................... 121Podział węzłów ..................................................................................................................................... 122Identyfikacja węzłów ............................................................................................................................ 122
Poleć książkęKup książkę
Spis treści 7
Widzialność ........................................................................................................................................... 122System współrzędnych ......................................................................................................................... 123
Przeliczanie współrzędnych ........................................................................................................ 123Granice węzła ........................................................................................................................................ 126Otoczka .................................................................................................................................................. 126
Właściwość layoutBounds ........................................................................................................... 126Właściwość boundsInLocal ......................................................................................................... 127Właściwość boundsInParent ....................................................................................................... 127
Rozszerzalność ...................................................................................................................................... 128Ustawianie wymiarów ......................................................................................................................... 128Opieka rodzicielska .............................................................................................................................. 129Przecięcia węzłów ................................................................................................................................. 129Przycinanie ............................................................................................................................................ 130Buforowanie .......................................................................................................................................... 131Zmiana położenia w scenografie ........................................................................................................ 132Aktywny, nieaktywny .......................................................................................................................... 133Cykl fokusu ........................................................................................................................................... 133Pole powierzchni .................................................................................................................................. 134Tworzenie migawek ............................................................................................................................. 134
Metoda snapshot(SnapshotParameters, WritableImage) ....................................................... 135Metoda snapshot(Callback<SnapshotResult, Void>,
SnapshotParameters, WritableImage) ................................................................................... 135
Rozdział 8. Kształty 2D .................................................................................................137Schemat dziedziczenia ......................................................................................................................... 137Wybrane właściwości i metody klasy Shape ..................................................................................... 137
fill .................................................................................................................................................... 137smooth ............................................................................................................................................ 138strokeDashOffset ........................................................................................................................... 138strokeLineCap ............................................................................................................................... 139strokeLineJoin ............................................................................................................................... 139strokeMiterLimit ........................................................................................................................... 140stroke .............................................................................................................................................. 140strokeType ..................................................................................................................................... 141strokeWidth ................................................................................................................................... 141Metoda substract(Shape, Shape) ................................................................................................. 142Metoda union(Shape, Shape) ...................................................................................................... 142
Linia (Line) ............................................................................................................................................ 143Linia przerywana .................................................................................................................................. 143
Poleć książkęKup książkę
8 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Linia łamana (Polyline) ....................................................................................................................... 144Czcionki ................................................................................................................................................. 145
Terminologia czcionek ................................................................................................................. 145Dostępne czcionki ......................................................................................................................... 145Czcionka domyślna ...................................................................................................................... 146Tworzenie czcionki ....................................................................................................................... 146
Tekst (Text) ........................................................................................................................................... 147baselineOffset ................................................................................................................................ 147boundsType ................................................................................................................................... 148font .................................................................................................................................................. 148fontSmoothingType ...................................................................................................................... 149lineSpacing ..................................................................................................................................... 149strikethrough ................................................................................................................................. 149textAlignment ................................................................................................................................ 149textOrigin ....................................................................................................................................... 150text ................................................................................................................................................... 150underline ........................................................................................................................................ 151wrappingWidth ............................................................................................................................. 151x, y ................................................................................................................................................... 151Przykład .......................................................................................................................................... 151
Prostokąt (Rectangle) .......................................................................................................................... 152Kontur prostokąta ......................................................................................................................... 153
Koło (Circle) ......................................................................................................................................... 154Elipsa (Ellipse) ...................................................................................................................................... 155Łuk, wycinek koła (Arc) ...................................................................................................................... 155Wielokąt (wielobok) (Polygon) .......................................................................................................... 158Krzywe Béziera ..................................................................................................................................... 159
Kwadratowa krzywa Béziera (QuadCurve) ............................................................................... 159Sześcienna krzywa Béziera (CubicCurve) ................................................................................. 160
Ścieżka (Path) ........................................................................................................................................ 161Klasa PathElement ........................................................................................................................ 161Klasa ArcTo ................................................................................................................................... 162Przykład 1. ..................................................................................................................................... 163Przykład 2. ..................................................................................................................................... 163Klasa FillRule ................................................................................................................................. 164
Ścieżka SVG (SVGPath) ...................................................................................................................... 165
Poleć książkęKup książkę
Spis treści 9
Rozdział 9. Feeria kolorów ...........................................................................................169Modele kolorów .................................................................................................................................... 169
Modele RGB i RGBA .................................................................................................................... 169Model HSL/HSV ........................................................................................................................... 170
Palety kolorów ...................................................................................................................................... 171Paleta 16 kolorów nazwanych ..................................................................................................... 171Paleta Web Safe Colors ................................................................................................................ 171Paleta kolorów nazwanych CSS .................................................................................................. 172Rozszerzona paleta kolorów nazwanych EN ............................................................................ 172Paleta kolorów mających polskie nazwy .................................................................................... 172Paleta nazwanych kolorów HSL ................................................................................................. 172Paleta kolorów HSL ...................................................................................................................... 172
Kolory w JavaFX ................................................................................................................................... 172Tworzenie kolorów ....................................................................................................................... 173Zmiany jasności ............................................................................................................................ 176Zmiany nasycenia ......................................................................................................................... 176Odcienie szarości .......................................................................................................................... 176Interpolacja koloru ....................................................................................................................... 177Odwrócenie koloru ....................................................................................................................... 177
Wypełnienie obrazem .......................................................................................................................... 178Desenie proporcjonalne ............................................................................................................... 179Desenie nieproporcjonalne ......................................................................................................... 181
Gradienty ............................................................................................................................................... 181Obiekt Stop .................................................................................................................................... 181Gradienty liniowe ......................................................................................................................... 182Gradienty radialne ........................................................................................................................ 185
Przeliczenia kolorów ............................................................................................................................ 190
Rozdział 10. Przekształcenia ........................................................................................191Schemat dziedziczenia ......................................................................................................................... 191Algebra liniowa ..................................................................................................................................... 191Wektor kolumnowy punktu ............................................................................................................... 192
Wektor punktu 3D ....................................................................................................................... 192Wektor punktu 2D ....................................................................................................................... 192
Macierz transformacji .......................................................................................................................... 192Macierz transformacji 3D ............................................................................................................ 192Macierz transformacji 2D ............................................................................................................ 192
Mnożenie wektora 3D przez macierz 3D .......................................................................................... 193Mnożenie wektora 2D przez macierz 2D .......................................................................................... 193
Poleć książkęKup książkę
10 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Mnożenie macierzy 2D przez macierz 2D ........................................................................................ 194Mnożenie macierzy ....................................................................................................................... 194
Translacja (przesunięcie) .................................................................................................................... 196Macierz translacji 3D .................................................................................................................... 196Macierz translacji 2D .................................................................................................................... 196Translacja w JavaFX ..................................................................................................................... 196
Skalowanie ............................................................................................................................................. 197Macierz skalowania 3D ................................................................................................................ 197Macierz skalowania 3D z uwzględnieniem punktu skalowania ............................................. 197Macierz skalowania 2D ................................................................................................................ 198Macierz skalowania 2D z uwzględnieniem punktu skalowania ............................................. 198Skalowanie w JavaFX .................................................................................................................... 198
Przekrzywienie ...................................................................................................................................... 200Macierz przekrzywienia 2D ......................................................................................................... 200Macierz przekrzywienia 2D z uwzględnieniem punktu przekrzywienia .............................. 200Przekrzywienia w JavaFX ............................................................................................................. 200
Obrót ...................................................................................................................................................... 201Macierze obrotu 3D ...................................................................................................................... 201Macierze obrotu 3D z uwzględnieniem punktu obrotu .......................................................... 202Macierz obrotu 2D ........................................................................................................................ 203Macierz obrotu 2D z uwzględnieniem punktu obrotu ............................................................ 204Obrót w JavaFX ............................................................................................................................. 204
Przekształcenia afiniczne ..................................................................................................................... 205Odbicie względem prostej przechodzącej przez punkt (0, 0) ................................................. 205Odbicie względem prostej nieprzechodzącej przez punkt (0, 0) ............................................ 207
TransformChangeEvent ...................................................................................................................... 209Łączenie transformacji ......................................................................................................................... 209Dołączanie transformacji .................................................................................................................... 210
Metoda void append(Transform) klasy Affine ......................................................................... 210Metoda void prepend(Transform) klasy Affine ....................................................................... 211
Inwersja macierzy 2D .......................................................................................................................... 211Macierz jednostkowa .................................................................................................................... 211Wyznacznik macierzy .................................................................................................................. 211Transpozycja macierzy ................................................................................................................. 213Dzielenie macierzy ........................................................................................................................ 214Macierz odwrotna ......................................................................................................................... 214
Poleć książkęKup książkę
Spis treści 11
Rozdział 11. Kształty 3D, kamery i światła .....................................................................219Schemat dziedziczenia ......................................................................................................................... 219Klasa Shape3D ...................................................................................................................................... 219
Tworzenie obiektu 3D .................................................................................................................. 220Sposób renderowania (DrawMode) ........................................................................................... 221Widoczność figury (CullFace) .................................................................................................... 222
Kamery ................................................................................................................................................... 223Kamera równoległa (ParallelCamera) ........................................................................................ 223Kamera perspektywiczna (PerspectiveCamera) ....................................................................... 223Operowanie kamerą ..................................................................................................................... 224
Światła .................................................................................................................................................... 226AmbientLight ................................................................................................................................ 226PointLight ...................................................................................................................................... 227
Materiał .................................................................................................................................................. 227PhongMaterial ............................................................................................................................... 228
A jednak się kręci — ruch obiektu 3D ............................................................................................... 229Klasa SubScene ..................................................................................................................................... 230
Rozdział 12. Zdarzenia gestów i dotyku .........................................................................231Ważne uwagi ......................................................................................................................................... 231Schemat dziedziczenia ......................................................................................................................... 231Zdarzenia dotyku TouchEvent ........................................................................................................... 232
Typy zdarzeń ................................................................................................................................. 232Informacje o zdarzeniu ................................................................................................................ 232
Punkt dotyku TouchPoint .................................................................................................................. 233Cel zdarzenia ................................................................................................................................. 233TouchPoint.STATE ...................................................................................................................... 234Wynik próbkowania PickResult ................................................................................................. 234Zdarzenia wielodotykowe ............................................................................................................ 234
Zdarzenia gestów GestureEvent ......................................................................................................... 235Zdarzenia obrotu RotateEvent .................................................................................................... 236Zdarzenia przewijania ScrollEvent ............................................................................................. 238Zdarzenia przeciągania palcem SwipeEvent ............................................................................. 240Zdarzenia rozszerzania ZoomEvent ........................................................................................... 241Zdarzenia myszy a zdarzenia gestów ......................................................................................... 242
Poleć książkęKup książkę
12 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Rozdział 13. Efekty ......................................................................................................243Klasy efektów ........................................................................................................................................ 243Efekt DropShadow — padający (rzucany) cień ............................................................................... 244Efekt InnerShadow — cień wewnętrzny ...........................................................................................246Shadow — cień ..................................................................................................................................... 247BoxBlur — rozmycie pudełkowe ........................................................................................................ 248GaussianBlur — rozmycie Gaussa ..................................................................................................... 249MotionBlur — rozmycie smugowe .................................................................................................... 249Bloom — odblask ................................................................................................................................. 250Glow — poświata .................................................................................................................................. 251Reflection — odbicie ............................................................................................................................ 251SepiaTone — filtr sepia ........................................................................................................................ 252FloatMap ................................................................................................................................................ 253DisplacementMap — mapa przemieszczeń (pikseli) ...................................................................... 254ColorAdjust — podkręcenie koloru .................................................................................................. 255ColorInput — kolor wejściowy .......................................................................................................... 256ImageInput — obraz wejściowy ......................................................................................................... 257BlendMode — tryb mieszania ............................................................................................................ 257Blend — mieszanina ............................................................................................................................ 259
Mieszanie kolorów ........................................................................................................................ 259Mieszanie obrazów ....................................................................................................................... 260
Wtapianie w tło .................................................................................................................................... 261PerspectiveTransform — zmiana perspektywy ................................................................................ 262Lighting — oświetlenie ........................................................................................................................ 263Klasa Light ............................................................................................................................................. 265
Light.Distant .................................................................................................................................. 265Light.Point ..................................................................................................................................... 266Light.Spot ....................................................................................................................................... 266
Łączenie efektów .................................................................................................................................. 267
Rozdział 14. Animacje ..................................................................................................269Schemat dziedziczenia ......................................................................................................................... 269Wprowadzenie ...................................................................................................................................... 270Klasa Duration ...................................................................................................................................... 271Interpolacja ........................................................................................................................................... 273
Klasa Interpolator.LINEAR ......................................................................................................... 273Klasa Interpolator.DISCRETE .................................................................................................... 275Klasy Interpolator.EASE_xxx ...................................................................................................... 276Metody klasy Interpolator ........................................................................................................... 279Metody statyczne klasy Interpolator .......................................................................................... 280
Poleć książkęKup książkę
Spis treści 13
Klasa KeyValue ..................................................................................................................................... 282Klasa KeyFrame .................................................................................................................................... 282
eventHandler ................................................................................................................................. 282name ............................................................................................................................................... 283keyValues ....................................................................................................................................... 284duration .......................................................................................................................................... 284
Klasa Timeline ...................................................................................................................................... 284Klasa Animation ................................................................................................................................... 284
Właściwości ................................................................................................................................... 285Metody ........................................................................................................................................... 286Przykład .......................................................................................................................................... 286
Klasa AnimationTimer ........................................................................................................................ 287Klasa Transition .................................................................................................................................... 287
StrokeTransition ........................................................................................................................... 288FillTransition ................................................................................................................................. 289FadeTransition .............................................................................................................................. 289ScaleTransition .............................................................................................................................. 290RotateTransition ........................................................................................................................... 291TranslateTransition ...................................................................................................................... 292PathTransition .............................................................................................................................. 292PauseTransition ............................................................................................................................ 293SequentialTransition .................................................................................................................... 293ParallelTransition ......................................................................................................................... 295
Rozdział 15. Kontenery i zarządcy rozkładów .................................................................297Schemat dziedziczenia ......................................................................................................................... 297Klasa Parent .......................................................................................................................................... 298Klasa Group .......................................................................................................................................... 298Klasa Region .......................................................................................................................................... 299
Pole zawartości i dopełnienie ...................................................................................................... 300Tło i obramowanie ........................................................................................................................ 301Kształt regionu .............................................................................................................................. 301Dzieci regionu ............................................................................................................................... 302Tworzenie regionu ........................................................................................................................ 302
Klasa Background ................................................................................................................................. 304Klasa BackgroundFill ................................................................................................................... 304Klasa BackgroundImage .............................................................................................................. 305
Klasa Border .......................................................................................................................................... 308Klasa BorderStroke ............................................................................................................................... 309Klasa BorderImage ............................................................................................................................... 310
Poleć książkęKup książkę
14 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Zarządcy rozkładów ............................................................................................................................. 313Rozkład dowolny (Pane) .............................................................................................................. 314Wyliczenie (Pos) ........................................................................................................................... 315Rozkład warstwowy (StackPane) ................................................................................................ 316Rozkład poziomy (HBox) ............................................................................................................ 318Rozkład pionowy (VBox) ............................................................................................................ 320Rozkład przepływowy (FlowPane) ............................................................................................. 323Rozkład tekstowy (TextFlow) ..................................................................................................... 325Rozkład brzegowy (BorderPane) ................................................................................................ 326Rozkład kotwowy (AnchorPane) ................................................................................................ 328Rozkład kafelkowy (TilePane) .................................................................................................... 329Rozkład siatkowy (GridPane) ..................................................................................................... 331
Rozdział 16. Wyskakujące okna ....................................................................................335Schemat dziedziczenia ......................................................................................................................... 335Wyskakujące okno (PopupWindow) ................................................................................................ 335Okno podręczne (Popup) .................................................................................................................... 337Okno kontrolne (PopupControl) ....................................................................................................... 338Podpowiedź (Tooltip) .......................................................................................................................... 338
OverrunStyle .................................................................................................................................. 339Podpowiedzi zawierające obraz i klasa ContentDisplay ......................................................... 340
Menu kontekstowe (ContextMenu) .................................................................................................. 342Element menu (MenuItem) ........................................................................................................ 342
Rozdział 17. Panele i przyciski ......................................................................................345Klasa Control ........................................................................................................................................ 345Klasa Labeled ........................................................................................................................................ 345TitledPane — panel z nazwą ............................................................................................................... 346Accordion — akordeon ....................................................................................................................... 348ScrollBar — pasek przewijania ........................................................................................................... 349ScrollPane — panel przewijany .......................................................................................................... 351SplitPane — panel dzielony ................................................................................................................ 352Tab — zakładka .................................................................................................................................... 353TabPane — panel zakładek (kartoteka) ............................................................................................ 354ButtonBase ............................................................................................................................................ 357Button — przycisk ................................................................................................................................ 358ButtonBar — pasek przycisków .......................................................................................................... 359Hyperlink — łącze ................................................................................................................................ 361
Poleć książkęKup książkę
Spis treści 15
Rozdział 18. Kontrolki wyboru ......................................................................................365ToggleButton — przełącznik .............................................................................................................. 365ToggleGroup — grupa przycisków .................................................................................................... 366RadioButton — przycisk radiowy (opcja wyboru) .......................................................................... 367CheckBox — pole wyboru ................................................................................................................... 368ChoiceBox<T> — krótka lista wyboru .............................................................................................. 370
SelectionModel<T> i SingleSelectionModel<T> ...................................................................... 371StringConverter ............................................................................................................................. 372
Cell<T> .................................................................................................................................................. 374MultipleSelectionModel ...................................................................................................................... 376FocusModel<T> ................................................................................................................................... 377ListView<T> — lista wyboru .............................................................................................................. 377
Przewijanie do indeksu, ustawianie fokusu i orientacji ........................................................... 379Praca z modelem wyboru ............................................................................................................. 380Wykorzystywanie fabryki komórek ........................................................................................... 381TextFieldListCell ........................................................................................................................... 383ComboBoxListCell ........................................................................................................................ 385ChoiceBoxListCell ........................................................................................................................ 386CheckBoxListCell .......................................................................................................................... 386Zdarzenia edycji ............................................................................................................................ 387
ComboBoxBase ..................................................................................................................................... 387ComboBox — złożona lista wyboru .................................................................................................. 389ColorPicker — próbnik koloru .......................................................................................................... 392DatePicker — próbnik daty ................................................................................................................ 393
Fabryka dat .................................................................................................................................... 397
Rozdział 19. Menu .......................................................................................................399Schemat dziedziczenia elementów menu .......................................................................................... 399MenuBar — pasek menu ..................................................................................................................... 399MenuItem — opcja menu ................................................................................................................... 400Menu ...................................................................................................................................................... 401SeparatorMenuItem — separator opcji ............................................................................................. 402CheckMenuItem — opcja wyboru ..................................................................................................... 403RadioMenuItem — opcja radiowa ..................................................................................................... 404CustomMenuItem — opcja dowolna ................................................................................................ 404MenuButton — przycisk menu .......................................................................................................... 406SplitMenuButton — dzielony przycisk menu .................................................................................. 407
Poleć książkęKup książkę
16 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Rozdział 20. Kontrolki tekstowe, liczbowe i inne ............................................................409TextInputControl ................................................................................................................................. 409TextField — pole tekstowe .................................................................................................................. 411TextFormatter ....................................................................................................................................... 413
TextFormatter.Change ................................................................................................................. 413UnaryOperator<TextFormatter.Change> ................................................................................. 414
PasswordField — pole hasła ............................................................................................................... 416TextArea — powierzchnia tekstowa .................................................................................................. 417HTMLEditor — edytor HTML .......................................................................................................... 418ProgressIndicator — wskaźnik postępu ............................................................................................ 421ProgressBar — pasek postępu ............................................................................................................ 422Slider — suwak ..................................................................................................................................... 423Spinner — przewijarka ........................................................................................................................ 425
SpinnerValueFactory<T> ............................................................................................................ 426Label — etykieta ................................................................................................................................... 427Separator ................................................................................................................................................ 427ToolBar — pasek narzędziowy ........................................................................................................... 428
Rozdział 21. Dialogi .....................................................................................................429Optional<T> ......................................................................................................................................... 429
Obsługa obiektu ............................................................................................................................ 431Filtrowanie i mapowanie ............................................................................................................. 432
ButtonType ........................................................................................................................................... 433DialogPane — rozkład dialogowy ...................................................................................................... 434Dialog<R> ............................................................................................................................................. 434Praca z dialogami ................................................................................................................................. 436
Konfigurowanie dialogu i rozkładu ............................................................................................ 437Pobieranie wyniku ........................................................................................................................ 439Walidacja stanu dialogu i jego zamykanie ................................................................................ 440Konwerter wyniku ........................................................................................................................ 442
Alert — dialog alarmu ......................................................................................................................... 442ChoiceDialog — dialog wyboru ......................................................................................................... 444TextInputDialog — dialog tekstowy .................................................................................................. 445FileChooser — okno wyboru plików ................................................................................................. 445DirectoryChooser — okno wyboru folderów ................................................................................... 447
Poleć książkęKup książkę
Spis treści 17
Rozdział 22. Kontrolki prezentacji danych .....................................................................449Pagination — stronicowanie ............................................................................................................... 449TableView — tabela danych ............................................................................................................... 451
Kolumna tabeli TableColumn ..................................................................................................... 453Fabryka wartości właściwości (PropertyValueFactory) .......................................................... 453Placeholder .................................................................................................................................... 454MapValueFactory ......................................................................................................................... 455Zmiana widoczności i kolejności kolumn ................................................................................. 455Sortowanie ..................................................................................................................................... 456Zmiana rozmiaru kolumny i zagnieżdżanie kolumn ............................................................... 457Komórka tablicy TableCell .......................................................................................................... 459Wybieranie elementów ................................................................................................................ 460Fokus .............................................................................................................................................. 461Edycja danych ................................................................................................................................ 462Przewijanie ..................................................................................................................................... 463
TreeView — drzewo danych ............................................................................................................... 464Edycja danych ................................................................................................................................ 467Model wybierania ......................................................................................................................... 469
TreeTableView — tabela z drzewem danych ................................................................................... 469
Rozdział 23. Wykresy ...................................................................................................471Schemat dziedziczenia ......................................................................................................................... 471Klasa Chart ............................................................................................................................................ 472Klasa Axis<T> ....................................................................................................................................... 472Klasa CategoryAxis .............................................................................................................................. 473Klasa ValueAxis<T extends Number> .............................................................................................. 473Klasa NumberAxis ............................................................................................................................... 474PieChart — wykres kołowy ................................................................................................................. 474
Klasa PieChart.Data ...................................................................................................................... 475Klasa XYChart<X, Y> .......................................................................................................................... 476
Klasa statyczna XYChart.Series<X, Y> ...................................................................................... 477Klasa statyczna XYChart.Data<X, Y> ........................................................................................ 477
BarChart<X, Y> — wykres paskowy ................................................................................................. 478StackedBarChart<X, Y> — wykres paskowy skumulowany .......................................................... 479ScatterChart<X, Y> — wykres punktowy ......................................................................................... 480LineChart<X, Y> — wykres liniowy .................................................................................................. 481BubbleChart<X, Y> — wykres bąbelkowy ........................................................................................ 482AreaChart<X, Y> — wykres powierzchniowy ................................................................................. 483StackedAreaChart<X, Y> — wykres warstwowy ............................................................................. 484
Poleć książkęKup książkę
18 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Rozdział 24. Praca z obrazami ......................................................................................485Image ...................................................................................................................................................... 485
Pobieranie obrazu za pomocą InputStream i URL-a ............................................................... 487ImageView ............................................................................................................................................. 489PixelFormat.Type ................................................................................................................................. 490
Zamiana A, R, G, B na int ............................................................................................................ 490Zamiana int na A, R, G, B ............................................................................................................ 491
PixelFormat<T extends Buffer> ......................................................................................................... 492WritablePixelFormat<T extends Buffer> ......................................................................................... 493PixelReader ............................................................................................................................................ 494WritableImage ...................................................................................................................................... 496PixelWriter ............................................................................................................................................ 497Tworzenie obrazów od zera ................................................................................................................ 499Zapisywanie obrazów .......................................................................................................................... 500
Rozdział 25. Rysowanie na płótnie ................................................................................503Canvas .................................................................................................................................................... 503GraphicsContext .................................................................................................................................. 504
Atrybut wypełnienia ..................................................................................................................... 505Atrybuty konturu .......................................................................................................................... 505Ogólne atrybuty renderowania ................................................................................................... 507Atrybuty tekstu .............................................................................................................................. 511Atrybut ścieżki ............................................................................................................................... 512
Wyświetlanie kształtów ....................................................................................................................... 513Wyświetlanie tekstu ............................................................................................................................. 514Wyświetlanie ścieżek ........................................................................................................................... 514Wyświetlanie obrazów ......................................................................................................................... 515Inne metody .......................................................................................................................................... 516Przykłady ............................................................................................................................................... 516
Szachownica ................................................................................................................................... 516Smok Heighwaya .......................................................................................................................... 517Symbol jin-jang ............................................................................................................................. 518Animowany symbol jin-jang ....................................................................................................... 520Rozety Grandiego ......................................................................................................................... 520
Poleć książkęKup książkę
Spis treści 19
Rozdział 26. Obsługa audio i wideo ...............................................................................523AudioClip .............................................................................................................................................. 526Track ...................................................................................................................................................... 527Media ..................................................................................................................................................... 527MediaPlayer .......................................................................................................................................... 528
MediaPlayer.Status ....................................................................................................................... 531MediaView ............................................................................................................................................ 531AudioEqualizer ..................................................................................................................................... 533EqualizerBand ....................................................................................................................................... 534Klasy zdarzeń i wyjątków .................................................................................................................... 534Przykłady ............................................................................................................................................... 535
Odtwarzacz audio ......................................................................................................................... 535Odtwarzacz wideo ......................................................................................................................... 537Czas i szybkość odtwarzania ....................................................................................................... 540
Rozdział 27. Przeciąganie systemowe ...........................................................................543Typy przeciągania ................................................................................................................................. 543TransferMode ....................................................................................................................................... 544DragEvent .............................................................................................................................................. 544Typ MIME ............................................................................................................................................. 546DataFormat ........................................................................................................................................... 546Clipboard ............................................................................................................................................... 547
ClipboardContent ......................................................................................................................... 548Dragboard ............................................................................................................................................. 548Przykłady ............................................................................................................................................... 548
Przenoszenie tekstu ...................................................................................................................... 548Przenoszenie HTML ..................................................................................................................... 549Przenoszenie obrazów .................................................................................................................. 550
Rozdział 28. Wielowątkowość ......................................................................................553Jak zawiesić aplikację ........................................................................................................................... 553Jak odwiesić aplikację — tworzenie wątku roboczego .................................................................... 554Jak zaktualizować główny wątek aplikacji ........................................................................................ 555Klasa Executors ..................................................................................................................................... 556Wyliczenie Worker.State ..................................................................................................................... 556Klasa WorkerStateEvent ...................................................................................................................... 557Interface Worker<V> .......................................................................................................................... 557Klasa Task<V> ...................................................................................................................................... 559Klasa Service .......................................................................................................................................... 563Klasa ScheduledService ........................................................................................................................ 565
Poleć książkęKup książkę
20 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Rozdział 29. Stylizacja węzłów .....................................................................................569CSS .......................................................................................................................................................... 569Arkusze stylów ...................................................................................................................................... 569
Domyślny arkusz stylów dla aplikacji ........................................................................................ 570Zmiana stylu w kodzie Java ................................................................................................................. 571Arkusz stylów dla sceny ....................................................................................................................... 571
Ustawianie domyślnego arkusza stylów .................................................................................... 571Ustawianie dodatkowego arkusza stylów .................................................................................. 572
Domyślny arkusz stylów dla podsceny .............................................................................................. 572Klasa Parent a arkusze stylów ............................................................................................................. 572Klasa Region a arkusze stylów ............................................................................................................ 573Klasa Node a arkusze stylów ............................................................................................................... 573
Właściwości id i style .................................................................................................................... 573Metadane CSS ................................................................................................................................ 574
Priorytety stylizacji ............................................................................................................................... 574Standardy CSS w JavaFX ..................................................................................................................... 575Dziedziczenie ........................................................................................................................................ 575Typy właściwości i jednostki ............................................................................................................... 576Selektory ................................................................................................................................................ 577Zmiany w Javie 9 .................................................................................................................................. 579
Rozdział 30. Nashorn ...................................................................................................581Uruchomienie skryptu ze stringa ....................................................................................................... 581Uruchomienie skryptu z pliku ............................................................................................................ 582JavaFX w skrypcie ................................................................................................................................ 582Wiązanie ................................................................................................................................................ 583Uproszczenie skryptu .......................................................................................................................... 584Uchwyty zdarzeń .................................................................................................................................. 585
Rozdział 31. Przeglądanie stron WWW ..........................................................................587WebView ............................................................................................................................................... 587WebEngine ............................................................................................................................................ 588Wywołania zwrotne interfejsu ............................................................................................................ 589
Uchwyt onAlert ............................................................................................................................. 590Uchwyt confirmHandler .............................................................................................................. 591Uchwyt promptHandler .............................................................................................................. 592Uchwyt createPopupHandler ...................................................................................................... 593PopupFeatures ............................................................................................................................... 594
Poleć książkęKup książkę
Spis treści 21
Uchwyt onResized ........................................................................................................................ 595Uchwyt onVisibilityChanged ...................................................................................................... 596Uchwyt onStatusChanged ........................................................................................................... 596
JSObject ................................................................................................................................................. 596Uruchamianie kodu JavaFX z poziomu JavaScriptu ................................................................ 598Uruchamianie kodu JavaScript z JavaFX ................................................................................... 599
Przeglądarka .......................................................................................................................................... 599
Rozdział 32. Współpraca ze Swingiem ...........................................................................601Współpraca z biblioteką SWT ............................................................................................................ 601Aplety ..................................................................................................................................................... 601JFXPanel ................................................................................................................................................ 601SwingNode ............................................................................................................................................ 602SwingFXUtils ........................................................................................................................................ 603
Rozdział 33. Ułatwienia dostępu ..................................................................................605Ułatwienia dostępu w Windows 7 i nowszych ................................................................................. 605
Pomoc dla osób niedowidzących ................................................................................................ 605Pomoc dla osób z niepełnosprawnością ruchową .................................................................... 605Pomoc dla osób niesłyszących .................................................................................................... 606Narrator .......................................................................................................................................... 606Skróty klawiaturowe ..................................................................................................................... 608
Ułatwienia dostępu w JavaFX ............................................................................................................. 608Klasa Platform ....................................................................................................................................... 608AccessibleRole ...................................................................................................................................... 608AccessibleAttribute .............................................................................................................................. 614AccessibleAction .................................................................................................................................. 619Node ....................................................................................................................................................... 620Współpraca z czytnikiem ekranowym .............................................................................................. 621Ustawianie i odczyt właściwości ......................................................................................................... 621Używanie wyłącznie klawiszy ............................................................................................................. 621Tryb wysokiego kontrastu ................................................................................................................... 622
Rozdział 34. FXML ........................................................................................................623Witaj, FXML-u ..................................................................................................................................... 623Import klas ............................................................................................................................................ 624Kontrolery ............................................................................................................................................. 625Element <fx:script> .............................................................................................................................. 626Stylizacja ................................................................................................................................................ 627
Poleć książkęKup książkę
22 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Właściwości domyślne ......................................................................................................................... 628Ustawianie właściwości ....................................................................................................................... 629Tworzenie obiektów ............................................................................................................................. 629
Znacznik <fx:include> ................................................................................................................. 630Znacznik <fx:constant> ............................................................................................................... 631Znaczniki <fx:define> i <fx:reference> ...................................................................................... 631Znacznik <fx:copy> ...................................................................................................................... 632Znacznik <fx:root> ....................................................................................................................... 633
Rozróżnianie atrybutów ...................................................................................................................... 633Wiązanie wyrażeń ................................................................................................................................ 635Scene Builder ......................................................................................................................................... 636Zalety i wady FXML-a ......................................................................................................................... 636
Zalety .............................................................................................................................................. 636Wady ............................................................................................................................................... 636
Rozdział 35. Drukowanie węzłów .................................................................................637Wyliczenia ............................................................................................................................................. 638JobSettings ............................................................................................................................................. 639PrinterJob .............................................................................................................................................. 640Przykłady ............................................................................................................................................... 641
Najprostsze zadanie drukowania ................................................................................................641Wyświetlanie okna ustawień strony ........................................................................................... 641Wyświetlanie okna drukowania .................................................................................................. 642Drukowanie strony internetowej ................................................................................................ 643
Rozdział 36. Modularyzacja ..........................................................................................645Modularyzacja kodu ............................................................................................................................ 645
Co to jest moduł ............................................................................................................................ 645Słowa kluczowe ............................................................................................................................. 646Zależności cykliczne ..................................................................................................................... 646Dyrektywy ...................................................................................................................................... 648Dyrektywy requires i exports ...................................................................................................... 649Dyrektywa requires transitive ..................................................................................................... 653Dyrektywa exports to ................................................................................................................... 654Dyrektywa opens to ...................................................................................................................... 655Dyrektywa opens ........................................................................................................................... 656Moduły otwarte ............................................................................................................................. 656Tworzenie usług zlokalizowanych .............................................................................................. 656Dyrektywy provides with oraz uses ............................................................................................ 657Tworzenie usług ............................................................................................................................ 658
Poleć książkęKup książkę
Spis treści 23
Dyrektywa requires static ............................................................................................................ 660Pusty plik module-info.java ......................................................................................................... 661
Modularyzacja JDK .............................................................................................................................. 662Moduły agregacyjne ..................................................................................................................... 662Moduły nienazwane ..................................................................................................................... 662Moduły automatyczne ................................................................................................................. 663
Skorowidz ..................................................................................................................665
Poleć książkęKup książkę
24 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Poleć książkęKup książkę
Rozdział 19.
MenuSchemat dziedziczenia elementów menuWszystkie elementy menu dziedziczą po MenuItem, która to klasa z kolei dziedziczy po Object.Rysunek 19.1 pokazuje schemat dziedziczenia klas związanych z menu.
Rysunek 19.1.Schemat dziedziczeniaklas związanychz menu
MenuBar — pasek menuPasek menu MenuBar dziedziczy po klasie Control. Służy on do uporządkowania elementów klasyMenu. Każdy z tych elementów jest reprezentowany jako osobny przycisk. Obiekt klasy Menumożna utworzyć przy użyciu jednego z dwóch konstruktorów:
MenuBar(),
MenuBar(Menu ...).
Klasa MenuBar udostępnia właściwość useSystemMenuBar, przedstawioną w tabeli 19.1.
TABELA 19.1. Właściwość klasy MenuBar
Właściwość Typ Opis
useSystemMenuBar boolean Jeśli true, używane jest menu systemowe,w sytuacji gdy system operacyjny takie przewiduje.
Poleć książkęKup książkę
400 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
W przykładzie 19.1 (Listing19_01) pokazano, jak stworzyć proste menu i dodać je do okna. W tejformie menu posiada tylko główne przyciski, które po kliknięciu nie rozwijają żadnych opcji.Rysunek 19.2 ilustruje efekt działania kodu.
PRZYKŁAD 19.1. Tworzenie prostego menu
// Tworzymy elementy menu.Menu menu1 = new Menu("Plik");Menu menu2 = new Menu("Narzędzia");Menu menu3 = new Menu("Pomoc");MenuBar menuBar = new MenuBar(); // Tworzymy pasek menu.menuBar.getMenus().addAll(menu1, menu2, menu3); // Dodajemy menu do paska menu.root.getChildren().add(menuBar); // Dodajemy pasek menu do rozkładu.
Rysunek 19.2.Proste menu
MenuItem — opcja menuKlasa MenuItem jest elementem służącym do tworzenia opcji menu. Nie jest kontrolką ani węzłem,dziedziczy po klasie Object. Obiekt taki może być utworzony z wykorzystaniem jednego z trzechkonstruktorów:
MenuItem(),
MenuItem(String text),
MenuItem(String text, Node graphic).
Klasa ta udostępnia szereg właściwości, przedstawionych w tabeli 19.2.
TABELA 19.2. Właściwości klasy MenuItem
Właściwość Typ Opis
accelerator KeyCombination Skrót klawiaturowy do wywołania opcji menu.
disable boolean Jeśli true, opcja menu przestanie być czynna (zostanie wyszarzona).
graphic Node Grafika do wyświetlenia w opcji. Na ogół ImageView 16×16 pikseli.
id String Identyfikator opcji.
mnemonicParsing
boolean Jeśli true, zostanie wykonane parsowanie tekstu opcji, abysprawdzić, czy istnieje podkreślnik (_) i ustalić kombinacjęwywołującą. Domyślnie true.
onAction EventHandler<ActionEvent>
Zdarzenie jest wysyłane, gdy opcja zostanie wywołana.
Poleć książkęKup książkę
Rozdział 19. Menu 401
TABELA 19.2. Właściwości klasy MenuItem — ciąg dalszy
Właściwość Typ Opis
onMenuValidation
EventHandler<Event>
Zdarzenie jest wysyłane, gdy zostanie użyty skrót klawiaturowyalbo gdy zostanie wywołany uchwyt onShowing.
parentMenu Menu Menu, do którego ta opcja jest przypisana. Rodzic nie zawszeistnieje, np. gdy opcja nie jest jeszcze przypisana, jest elementemmenu kontekstowego, jest umieszczona bezpośrednio w MenuBar(jako Menu), jest przypisana do MenuButton itd.
parentPopup ContextMenu Menu kontekstowe, do którego należy dana opcja.
style String Styl CSS do zastosowania.
text String Tekst wyświetlany w opcji.
visible boolean Jeśli true, opcja jest widoczna. Jeśli false, opcja jest niewidoczna.
Opcję do menu dodaje się bardzo łatwo — trzeba pobrać z elementu typu Menu listę jego dzieciza pomocą metody getItems(), po czym wywołać na niej metodę add(MenuItem). W przykładzie19.2 (Listing19_02) pokazano, jak utworzyć opcję menu ozdobioną rysunkiem i po wywołaniudrukującą tekst na konsoli. Rysunek 19.3 ilustruje efekt działania kodu.
PRZYKŁAD 19.2. Tworzenie menu z opcją
Menu menuPlik = new Menu("Plik"); // Tworzymy menu.MenuItem openItem = new MenuItem("Otwórz"); // Tworzymy opcję menu.// Dodajemy uchwyt zdarzenia „odpalenia” opcji.openItem.setOnAction(e -> System.out.println("Jestem opcją 'Otwórz'. Moim rodzicem jest menu:" + openItem.getParentMenu().getText());// Tworzymy obraz z pliku.Image image = new Image(new FileInputStream(new File("src/rozdzial19/dragon16.png")));openItem.setGraphic(new ImageView(image)); // Dodajemy obraz do ImageView.menuPlik.getItems().add(openItem); // Dodajemy opcję do menu.
Rysunek 19.3.Menu z jedną opcją
MenuKlasa Menu dziedziczy po MenuItem. To, że menu jest również opcją menu, pozwala na tworzeniemenu rozgałęzionych. Menu zwykle jest umieszczone wraz z innymi w pasku menu. W swojejliście elementów może zawierać zarówno obiekty klasy MenuItem, jak i innych klas dziedziczącychpo niej. Obiekt można utworzyć z wykorzystaniem jednego z czterech konstruktorów:
Menu(),
Menu(String text),
Poleć książkęKup książkę
402 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Menu(String text, Node graphic),
Menu(String text, Node graphic, MenuItem ... items).
Klasa Menu udostępnia właściwości przedstawione w tabeli 19.3. Dotyczą one przypadku, gdymenu posiada menu kontekstowe.
TABELA 19.3. Właściwości klasy Menu
Właściwość Typ Opis
onHidden EventHandler<Event> Wywoływana tuż po ukryciu menu kontekstowego.
onHiding EventHandler<Event> Wywoływana tuż przed ukryciem menu kontekstowego.
onShowing EventHandler<Event> Wywoływana tuż przed pokazaniem menu kontekstowego.
onShown EventHandler<Event> Wywoływana tuż po pokazaniu menu kontekstowego.
showing boolean Jeśli true, menu kontekstowe jest widoczne.
Klasa Menu udostępnia również cztery zdarzenia, które zachodzą w przypadku, gdy menu kon-tekstowe dla tego menu nie jest puste (nie jest null). Są to:
ON_HIDDEN,
ON_HIDING,
ON_SHOWING,
ON_SHOWN.
W przykładzie 19.3 (Listing19_03) pokazano, jak utworzyć podmenu — w tym celu wystarczydodać menu do innego menu w ten sam sposób, w jaki dodaje się obiekty MenuItem.
PRZYKŁAD 19.3. Tworzenie podmenu
Menu menuZapisz = new Menu("Zapisz jako"); // Tworzymy podmenu.// Tworzymy opcje podmenu.MenuItem txt = new MenuItem("*.txt");MenuItem rtf = new MenuItem("*.rtf");MenuItem pdf = new MenuItem("*.pdf");menuZapisz.getItems().addAll(txt, rtf, pdf); // Dodajemy opcje do podmenu.MenuItem drukujItem = new MenuItem("Drukuj");// Dodajemy menu i podmenu do menu głównego.menuPlik.getItems().addAll(otworzItem, zamknijItem, menuZapisz, drukujItem);
SeparatorMenuItem — separator opcjiSeparatorMenuItem dziedziczy po klasie CustomMenuItem, która zostanie omówiona w dalszymtoku rozdziału. Jest to linia pozwalająca na optyczne pogrupowanie opcji menu. Tworzymy goprzy użyciu bezparametrowego konstruktora SeparatorMenuItem().W przykładzie 19.4 (Listing19_04)pokazano, w jaki sposób to zrobić, natomiast rysunek 19.4 prezentuje efekt.
Poleć książkęKup książkę
Rozdział 19. Menu 403
PRZYKŁAD 19.4. Tworzenie separatora menu
Menu menuPlik = new Menu("Plik");MenuItem openItem = new MenuItem("Otwórz");SeparatorMenuItem sep = new SeparatorMenuItem(); // Tworzymy separator.MenuItem usunItem = new MenuItem("Usuń");// Dodajemy separator wraz z innymi opcjami do menu.menuPlik.getItems().addAll(openItem, sep, usunItem);
Rysunek 19.4.Menu z separatorem
CheckMenuItem — opcja wyboruKlasa CheckMenuItem może być użyta jako opcja w Menu i ContextMenu. Ma dwa stany, wybranyi niewybrany, dzięki czemu może służyć do przełączania między dwiema możliwościami.
Obiekt tej klasy może zostać utworzony za pomocą jednego z trzech konstruktorów:
CheckMenuItem(),
CheckMenuItem(String text),
CheckMenuItem(String text, Node graphics).
Klasa udostępnia właściwość selected, opisaną w tabeli 19.4.
TABELA 19.4. Właściwość klasy CheckMenuItem
Właściwość Typ Opis
selected boolean Określa, czy opcja jest zaznaczona.
Opcję wyboru tworzy się analogicznie jak inne opcje. Jak to zrobić, przedstawiono w przykładzie19.5 (Listing19_05). Wygląd opcji prezentuje rysunek 19.5.
PRZYKŁAD 19.5. Tworzenie opcji wyboru CheckMenuItem
Menu menuPlik = new Menu("Plik"); // Tworzymy menu.CheckMenuItem openItem = new CheckMenuItem("Otwórz RAM"); // Tworzymy opcję menu.// Dodajemy uchwyt zdarzenia.openItem.setOnAction(e -> System.out.println(openItem.isSelected() ?"Wybrałeś otwarcie w trybie RAM" : "Zrezygnowałeś z trybu RAM"));menuPlik.getItems().add(openItem); // Dodajemy opcję do menu.
Rysunek 19.5.KontrolkaCheckMenuItem
Poleć książkęKup książkę
404 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
RadioMenuItem — opcja radiowaRadioMenuItem, po umieszczeniu w grupie, pozwala na wybór tylko jednej opcji. Wizualnie przy-pomina opcję CheckMenuItem. Obiekt klasy może zostać utworzony za pomocą jednego z trzechkonstruktorów:
RadioMenuItem(),
RadioMenuItem(String text),
RadioMenuItem(String text, Node graphics).
Klasa udostępnia właściwości pokazane w tabeli 19.5.
TABELA 19.5. Właściwości klasy RadioMenuItem
Właściwość Typ Opis
selected boolean Określa, czy opcja jest zaznaczona.
toggleGroup ToggleGroup Grupa przełączników, do której należy opcja.
W przykładzie 19.6 (Listing19_06) przedstawiono, w jaki sposób można utworzyć grupę zawie-rającą przełączniki. Po utworzeniu grupy i kilku opcji przypinamy grupę do każdej z opcji zapomocą metody setToggleGroup(ToggleGroup), po czym w standardowy sposób dodajemy domenu. Efekt ilustruje rysunek 19.6.
PRZYKŁAD 19.6. Tworzenie grupy opcji
Menu menuGracz = new Menu("Gracz"); // Utworzenie menu.ToggleGroup t = new ToggleGroup(); // Utworzenie grupy przełączników.RadioMenuItem radio1 = new RadioMenuItem("Stalker"); // Utworzenie opcji.radio1.setToggleGroup(t); // Ustawienie grupy dla opcji.RadioMenuItem radio2 = new RadioMenuItem("Greenhorn"); // Utworzenie opcji.radio2.setToggleGroup(t); // Utworzenie grupy dla opcji.radio2.setSelected(true); // Ustawienie, że opcja będzie wybrana.menuGracz.getItems().addAll(radio1, radio2); // Dodanie opcji do menu.
Rysunek 19.6.Grupa opcjiRadioMenuItem
CustomMenuItem — opcja dowolnaKlasa CustomMenuItem pozwala na umieszczenie w opcji dowolnego węzła, a więc i dowolnej kon-trolki. Obiekt tej klasy możemy utworzyć przy użyciu jednego z trzech konstruktorów:
Poleć książkęKup książkę
Rozdział 19. Menu 405
CustomMenuItem(),
CustomMenuItem(Node node),
CustomMenuItem(Node, node, boolean hideOnClick).
Klasa udostępnia właściwości przedstawione w tabeli 19.6.
TABELA 19.6. Właściwości klasy CustomMenuItem
Właściwość Typ Opis
content Node Zawartość do pokazania.
hideOnClick boolean Jeśli true, menu i opcja po kliknięciu zostaną ukryte.Jeśli false, menu i opcja pozostaną widoczne.
W przykładzie 19.7 (Listing19_07) zaprezentowano, jak można utworzyć pozycję w menu, w którejznajdzie się dowolny rozkład. W naszym przykładzie będzie to zestaw kontrolek, dlatego musimyustawić setHideOnClick(false), żeby można było zmieniać wartości kontrolek bez zamykaniamenu. Na rysunku 19.7 przedstawiono otwarte menu z dodaną w ten sposób pozycją.
PRZYKŁAD 19.7. Dodawanie dowolnego rozkładu jako opcji menu
VBox root = new VBox(); // Tworzymy rozkład.Menu menu1 = new Menu("Blend"); // Tworzymy menu.// Tworzymy opcję klienta. Dodajemy rozkład pobrany z klasy Listing13_01.CustomMenuItem cmi = new CustomMenuItem(root1);cmi.setHideOnClick(false); // Ustalamy, że kliknięcie nie ukrywa opcji i menu.menu1.getItems().add(cmi); // Dodajemy opcję do menu.MenuBar menuBar = new MenuBar(); // Tworzymy pasek menu.menuBar.getMenus().addAll(menu1); // Dodajemy menu do paska.root.getChildren().add(menuBar); // Dodajemy pasek do rozkładu.
Rysunek 19.7.Pozycja menuz dodanym własnymrozkładem
Poleć książkęKup książkę
406 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
MenuButton — przycisk menuMenuButton dziedziczy po ButtonBase. Tworzy przycisk, po którego kliknięciu pojawia się roz-wijane menu, które z kolei może zawierać opcje MenuItem i obiekty klas dziedziczących. Wizualnieprzypomina trochę element ComboBox.
Obiekt można utworzyć, korzystając z czterech konstruktorów:
MenuButton(),
MenuButton(String text),
MenuButton(String text, Node graphic),
MenuButton(String text, Node graphic, MenuItem ... items).
Klasa udostępnia właściwości pokazane w tabeli 19.7.
TABELA 19.7. Właściwości klasy MenuButton
Właściwość Typ Opis
popupSide Side Strona przycisku, z której powinno się pojawić rozwijane menu.
showing boolean Jeśli true, rozwijane menu jest obecnie widzialne.
Oprócz właściwości klasa udostępnia również cztery zdarzenia dotyczące rozwijanego menu:
ON_HIDDEN,
ON_HIDING,
ON_SHOWING,
ON_SHOWN.
Przykład 19.8 (Listing19_08) pokazuje, jak utworzyć taki przycisk. Nie różni się to niczym odtworzenia zwykłych opcji menu. Na rysunku 19.8 widać, jak takie menu się prezentuje.
PRZYKŁAD 19.8. Tworzenie przycisku menu
MenuButton butPlik = new MenuButton("Plik"); // Tworzymy przycisk menu.// Tworzymy opcje menu i separator.MenuItem openItem = new MenuItem("Otwórz");SeparatorMenuItem sep = new SeparatorMenuItem();MenuItem usunItem = new MenuItem("Usuń");butPlik.getItems().addAll(openItem, sep, usunItem); // Dodajemy opcje do przycisku.root.getChildren().add(butPlik); // Dodajemy przycisk do rozkładu.
Rysunek 19.8.Przykładowe menuz przyciskiemMenuButton
Poleć książkęKup książkę
Rozdział 19. Menu 407
SplitMenuButton — dzielony przycisk menuKlasa SplitMenuButton dziedziczy po MenuButton. Różni się od niego tym, że przycisk podzielonyjest na część tekstową i część zajmowaną przez przycisk.
Kliknięcie części tekstowej uruchomi akcję przewidzianą dla przycisku, natomiast kliknięcieczęści ze strzałką, zajmowanej przez przycisk, pokaże rozwijane menu z możliwością dokonaniawyboru. Dzięki temu przycisk może spełniać kilka funkcji jednocześnie.
W przykładzie 19.9 przedstawiono sposób, w jaki można utworzyć taki dzielony przycisk. W kodziepominięto tworzenie uchwytów — całość kodu znajduje się w klasie Listing19_09. Na rysunku19.9 można zobaczyć, jak menu prezentuje się wizualnie. Warto zwrócić uwagę, że obie częściprzycisku są wyraźnie od siebie oddzielone.
PRZYKŁAD 19.9. Tworzenie dzielonego przycisku menu
SplitMenuButton butPlik = new SplitMenuButton(); // Tworzymy przycisk dzielony.butPlik.setText("Plik"); // Ustalamy tekst dla przycisku.// Tworzymy opcje menu.MenuItem openItem = new MenuItem("Otwórz");SeparatorMenuItem sep = new SeparatorMenuItem();MenuItem usunItem = new MenuItem("Usuń");butPlik.getItems().addAll(openItem, sep, usunItem); // Dodajemy opcje do przycisku.
Rysunek 19.9.Dzielony przycisk menu
Poleć książkęKup książkę
408 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Poleć książkęKup książkę
SkorowidzA
adapter JavaBean, 53akceleratory, 117akcje AccessibleRole, 609akordeon, 348aktualizowanie wątku głównego,
555algebra liniowa, 191algorytm graficzny, Patrz efektanimacje, 269
czas trwania klatki, 271interpolator
EASE_BOTH, 279EASE_IN, 277EASE_OUT, 278SPLINE, 280
interpolatorydyskretne, 275liniowe, 273
klasaAnimation, 284AnimationTimer, 287Duration, 271FadeTransition, 289FillTransition, 289KeyFrame, 282KeyValue, 282ParallelTransition, 295PathTransition, 292PauseTransition, 293RotateTransition, 291ScaleTransition, 290SequentialTransition, 293
StrokeTransition, 288Timeline, 284klasa Transition, 287TranslateTransition, 292
klatka kluczowa, 282sterowanie przebiegiem, 285uzyskiwanie informacji, 285wartość kluczowa, 282
API przepływu, 42aplety, 601aplikacje
cykl życiowy, 31kończenie pracy, 33parametry uruchomieniowe, 34szkielet, 29
arkusze stylów, 569CSS, 120dla podsceny, 572dla sceny, 571dodatkowe, 572domyślne, 570–572priorytety stylizacji, 574
arraylisty, 56, 58asynchroniczne migawki, 135atrybut
effect, 509fillPaint, 505fillRule, 512font, 511fontSmoothing, 512globalAlpha, 507lineCap, 506lineDashes, 507lineDashOffset, 507
lineJoin, 506lineWidth, 506miterLimit, 506strokePaint, 505ścieżki, 512textAlign, 512textBaseline, 512
atrybutyAccessibleAttribute, 614, 615AccessibleRole, 609renderowania, 507tekstu, 511
audio, 523klasa AudioClip, 526typy kodowania, 523
Bbiblioteka SWT, 601buforowanie, 131
Ccień, 247
padający, 244wewnętrzny, 246
CSS, Cascading Style Sheets, 120,569dziedziczenie, 575selektory, 577standardy, 575
cyklfokusu, 133życiowy aplikacji, 31
Poleć książkęKup książkę
666 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
czas trwania klatki, 271czcionka domyślna, 146czcionki, 145
nachylenie, 147rodzina, 146tworzenie, 146waga, 147wielkość, 146
Ddane użytkownika, 76, 117data, 393, 397desenie
nieproporcjonalne, 181proporcjonalne, 179
diagram zależności modułu, 650,651, 660
dialog, 429, 436alarmu, 442tekstowy, 445wyboru, 444
dialogifiltrowanie, 432klasa
Alert, 442ButtonType, 433ChoiceDialog, 444Dialog<R>, 434DialogPane, 434Optional, 429TextInputDialog, 445
konfigurowanie, 437konwerter wyniku, 442mapowanie, 432modalne, 436obsługa obiektu, 431pobieranie wyniku, 439walidacja stanu, 440zamykanie, 440
dodawanieobrazu, 420transformacji, 210uchwytów i filtrów zdarzeń, 98
dopełnienie, 300algebraiczne, 215
dotyk, 231drukowanie
strony internetowej, 643węzłów, 637
drzewodanych, 89, 464
edycja danych, 467model wybierania, 469
elementów, 90dyrektywa, 648
exports, 649exports to, 654opens, 656opens to, 655provides with, 657requires, 649requires static, 660requires transitive, 653uses, 657
dzieci regionu, 302dziedziczenie dla klasy
Animation, 269Camera, 219Control, 345InputEvent, 231LightBase, 219MenuItem, 399Node, 121Pane, 313PopupWindow, 335Region, 471Shape, 137Shape3D, 219Transform, 191Window, 71klas rozkładu, 297
dzielenie macierzy, 214
Eedycja, 387
danych, 462pola ComboBox, 391
edytor HTML, 418drukowanie zawartości, 419
efekt, 243Bloom, 250BoxBlur, 248ColorAdjust, 255ColorInput, 256DisplacementMap, 254DropShadow, 244FloatMap, 253GaussianBlur, 249Glow, 251ImageInput, 257InnerShadow, 246MotionBlur, 249PerspectiveTransform, 262Reflection, 251Shadow, 247
efektycienia, 509łączenie, 267
element menu, 342elementy
2D, 1143D, 114
elipsa, 154etykieta, 427
Ffabryka
dat, 397dla kolumny, 454dla przewijarki, 426komórek, 381, 386, 454stron, 450wartości właściwości, 453
filtr SepiaTone, 252filtrowanie, 432
kolekcji, 69zdarzeń, 94, 98
Flow API, 42fokus, 133
gradientu, 187
Poleć książkęKup książkę
Skorowidz 667
funkcjaopen(), 593prompt(), 592
FXML, 623import klas, 624kontrolery, 625rozróżnianie atrybutów, 633stylizacja, 627tworzenie obiektów, 629ustawianie właściwości, 629wady, 636wiązanie wyrażeń, 635właściwości domyślne, 628zalety, 636znacznik
<fx:constant>, 631<fx:copy>, 632<fx:define>, 631<fx:include>, 630<fx:reference>, 631<fx:root>, 633<fx:script>, 626
Ggałąź, 89garbage collector, 52gesty, 231, 235getter getScene(), 75gradienty, 181
fokus, 187koło, 186koniec gradientu, 182linia gradientu, 183liniowe, 182punkty Stop, 183, 187radialne, 185ustawienia cyklu, 184, 188
grupa, 298przycisków, 366
Hhashmapy, 61hierarchia elementów, 90
Iidentyfikacja węzłów, 122import klas, 624informacje
o fokusie, 462o kolorach pikseli, 490o ścieżkach audio, 538o wyświetlaczu, 73o zdarzeniu, 104, 232
interfejsObserver, 42Worker<V>, 557
interpolacja, 273koloru, 177
interpolatorEASE_BOTH, 279EASE_IN, 277EASE_OUT, 278SPLINE, 280
interpolatorydyskretne, 275liniowe, 273
inwersja macierzy 2D, 211
JJavaBean, 53JavaFX, 27JavaFX Bean, 53JavaScript, 582jednostki, 576język
FXML, 623JavaScript, 582Nashorn, 581–585
Kkalendarz, 396kamera
perspektywiczna, 223równoległa, 223
kanał alfa, 490klasa
Accordion, 348Affine, 205Alert, 442AmbientLight, 226AnchorPane, 328Animation, 269, 284AnimationTimer, 287Application, 30ArcTo, 161AreaChart, 483AudioClip, 526AudioEqualizer, 533Axis<T>, 472Background, 304BackgroundFill, 304BackgroundImage, 305BarChart, 478Blend, 259Border, 308BorderImage, 310BorderPane, 326BorderStroke, 309BubbleChart, 482Button, 358ButtonBar, 359ButtonBase, 357ButtonType, 433Canvas, 503, Patrz rysowanie
na płótnieCategoryAxis, 473cav.css, 578Cell<T>, 374Chart, 472CheckBox, 368
Poleć książkęKup książkę
668 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
klasaCheckBoxListCell, 386CheckMenuItem, 403ChoiceBox<T>, 370ChoiceBoxListCell, 386ChoiceDialog, 444Circle, 154Clipboard, 547ClipboardContent, 548Collation, 638Color, 173ColorPicker, 392ComboBox, 389ComboBoxBase, 387ComboBoxListCell, 385ContentDisplay, 340ContextMenu, 342Control, 345CubicCurve, 160CullFace, 222CustomMenuItem, 404DataFormat, 546DatePicker, 393Dialog<R>, 434DialogPane, 434DirectoryChooser, 447Dragboard, 548DragEvent, 544DrawMode, 221Duration, 271EqualizerBand, 534Event, Patrz zdarzeniaEventHandler, 92EventType, 92Executors, 556FadeTransition, 289FadeTransition, 289FileChooser, 445FillRule, 164FillTransition, 289FlowPane, 323FocusModel<T>, 377FXCollections, 59GestureEvent, 231, 235
GraphicsContext, 504, 505, 516GridPane, 331Group, 298HBox, 318HTMLEditor, 418Hyperlink, 361Image, 485, Patrz obrazyImageInput, 257ImageView, 489Interpolator, 279Interpolator.DISCRETE, 275Interpolator.EASE_BOTH,
276, 279Interpolator.EASE_IN, 276,
277Interpolator.EASE_OUT,
276, 278Interpolator.LINEAR, 273JFXPanel, 601JobSettings, 639JSObject, 596KeyFrame, 282KeyValue, 282, 284Label, 427Labeled, 345Light, 265Light.Distant, 265Light.Point, 266Light.Spot, 266Lighting, 263Line, 143LineChart, 481ListView<T>, 377MapValueFactory, 455Media, 527MediaErrorEvent, 534MediaPlayer, 528MediaPlayer.Status, 531MediaView, 531Menu, 401MenuBar, 399MenuButton, 406MenuItem, 342MenuItem, 399, 400
MouseDragEvent, 107MultipleSelectionModel, 376MultipleSelectionModel, 469Naklady, 453Node, 573, 620, Patrz węzłyNumberAxis, 474Observable, 42Optional<T>, 429OverrunStyle, 339Pagination, 449Pane, 313Pane, 314ParallelCamera, 223ParallelTransition, 295Parent, 298, 572PasswordField, 416Path, 160PathElement, 161PathTransition, 292PauseTransition, 293PerspectiveCamera, 223PhongMaterial, 228PieChart, 474PieChart.Data, 475PixelFormat, 492PixelReader, 494PixelWriter, 497Platform, 608PointLight, 227Polygon, 158Polyline, 144Popup, 337PopupControl, 338PopupFeatures, 594PopupWindow, 335PopupWindow.Anchor
Location, 336PrinterJob, 640ProgressBar, 422ProgressIndicator, 421QuadCurve, 159RadioButton, 367RadioMenuItem, 404Rectangle, 152
Poleć książkęKup książkę
Skorowidz 669
Region, 299, 471, 573RotateEvent, 236RotateTransition, 291ScaleTransition, 290ScatterChart, 480Scene, 113, Patrz scenaScheduledService, 565ScrollBar, 349ScrollEvent, 238ScrollPane, 351SelectionModel<T>, 371Separator, 427SeparatorMenuItem, 402SequentialTransition, 293Service, 563Shape, 137, Patrz kształty 2DShape3D, Patrz kształty 3DSingleSelectionModel<T>, 371Slider, 423SnapshotParameters, 134Spinner, 425SpinnerValueFactory<T>, 426SplitMenuButton, 407SplitPane, 352StackedAreaChart, 484StackedBarChart, 479StackPane, 316Stage, 76StringConverter, 372StrokeTransition, 288SubScene, 230SwingFXUtils, 603SwingNode, 602SwipeEvent, 240Tab, 353TableCell, 459TableView, 451TabPane, 354Task<V>, 559TestUnaryOperator, 414Text, 147, Patrz tekstTextArea, 417TextField, 411TextFieldListCell, 383
TextFlow, 325TextFormatter, 413TextFormatter.Change, 413TextInputControl, 409TextInputControl, 410TextInputDialog, 445TilePane, 329Timeline, 284TitledPane, 346ToggleButton, 365ToggleGroup, 366ToolBar, 428Tooltip, 338TouchEvent, 231, 232TouchPoint, 233Track, 527Transform, 191Transition, 287TranslateTransition, 292TreeTableView, 469TreeView, 464UnaryOperator, 414ValueAxis, 473VBox, 320WebEngine, 588WebView, 587Window, 71, Patrz oknoWorker, 559WorkerStateEvent, 557WritableImage, 496WritablePixelFormat, 493XYChart, 476XYChart.Data, 477XYChart.Series, 477ZoomEvent, 241
klasy efektów, 243klatka kluczowa, 270, 282, 283klawiatura, 110
typy zdarzeń, 111kolekcja
ObservableArray, 62ObservableList, 55ObservableMap, 61ObservableSet, 59
kolekcjefiltrowanie, 69jako właściwości, 64sortowanie, 70wiązanie
do elementu, 68referencji, 67właściwości, 66zawartości, 67
kolory, 169efekt
ColorAdjust, 255ColorInput, 256
gradienty, 181interpolacja, 177konwerter, 373metody, 173mieszanie, 259model
HSL/HSV, 170RGB, 169RGBA, 169
odcienie szarości, 176odwrócenie, 177palety, 171pikseli, 490próbnik, 392przeliczenia, 190stałe wyliczenia, 173w JavaFX, 172wejściowe, 256zmiany jasności, 176zmiany nasycenia, 176zmienne typu int, 490
koło, 154gradientu, 186
kombinacje klawiszy, 116komparator sortujący liczby, 70konfigurowanie
dialogu, 437rozkładu, 437
konstruktor klasy Color, 173kontenery, 297kontrolery, 625
Poleć książkęKup książkę
670 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
kontrolkiaktywne, 133nieaktywne, 133prezentacji danych, 449tekstowe, 409wyboru, 365
kontur włosowy, 141kontury obszaru, 309konwersja obiektów, 597konwerter
dla kolorów, 373liter, 416wyniku, 442
korektor graficzny, 533korzeń, 89, 113krótka lista wyboru, 370krzywe Béziera, 158, 281
kwadratowe, 159kształt regionu, 301kształty 2D, 137
czcionki, 145dodawanie, 142elipsa, 154koło, 154krzywe Béziera, 158linia, 143linia łamana, 144linia przerywana, 143łuk, 155odejmowanie, 142prostokąt, 152wielokąt, 158właściwość
fill, 137smooth, 138strokeDashOffset, 138strokeLineCap, 139strokeLineJoin, 139strokeMiterLimit, 140strokeType, 141strokeWidth, 141
wycinek koła, 155
kształty 3D, 219ruch obiektu, 229widoczność figury, 222wyświetlanie, 513
kursor, 114ustawianie dla sceny, 115ustawianie dla węzła, 115własny, 116
kwadratowa krzywa Béziera, 159
Llinia, 143
gradientu, 183łamana, 144przerywana, 143
lista wyboru, 377krótka, 370złożona, 389
listener, 52ChangeListener, 40, 46, 64InvalidationListener, 64ListChangeListener, 56, 57, 64
listowanie parametrów, 35listy, 55
czynności, 59dodawanie obiektu
ChangeListener, 65przewijanie do indeksu, 379ustawianie fokusu, 379ustawianie orientacji, 379
liść, 89lokalizacja, 656
Łłącze, 361łączenie
efektów, 267transformacji, 209
łuk, 155z konturem, 157z wypełnieniem, 157
Mmacierz
jednostkowa, 211obrotu, 201–204odwrotna, 214, 216przekrzywienia 2D, 200skalowania, 197, 198transformacji, 192translacji, 196
macierze 2Ddzielenie, 214inwersja, 211transpozycja, 213wyznacznik, 211
mapa, 61przemieszczeń, 254wartości typu float, 253
mapowanie, 432margines, 316maska, 131materiał, 227menu, 399
kontekstowe, 342opcja, 400
dowolna, 404radiowa, 404wyboru, 403
przycisk, 406przycisk dzielony, 407separator opcji, 402
metadane, 525CSS, 574
metodaaddAll(), 143append(), 210Application.launch(), 76bind(), 48bindContent(), 67brighter(), 176Color.color(), 173Color.gray(), 177Color.hsb(), 174Color.rgb(), 174
Poleć książkęKup książkę
Skorowidz 671
Color.web(), 174, 175computeAreaInScreen(), 134createPopupHandler(), 594darker(), 176Double.parseDouble(), 36fireEvent(), 100forListView(), 384get(), 430getArgb(), 494getContent(), 337getCuePoints(), 286getPickResult(), 234getPixelFormat(), 494getPixels(), 494getTransformAffine(), 510getUnnamed(), 36grayRGB(), 177grayscale(), 177hasProperties(), 76init(), 30Integer.toBinaryString(), 491interpolate(), 177, 279Interpolator.SPLINE(), 280interpolator.TANGENT(), 281invert(), 177isBound(), 49isDirect(), 236isInertia(), 236isPresent(), 430isResizable(), 128isVisible(), 122jumpTo(), 286main(), 29multiply(), 50pause(), 286Platform.exit(), 33prepend(), 211run(), 117set(), 69setBlendMode(), 261setCacheHint(), 132setClip(), 130setDisable(), 133
setStrokeLineCap(), 139showAndWait(), 87snapshot(), 118, 119, 135start(), 30stop(), 30, 286substract(), 142toBack(), 83toString(), 372toTop(), 83unbind(), 48unbindBidirectional(), 49union(), 142
metodyklasy
Interpolator, 279JSObject, 597Node, 620PrinterJob, 640Service, 563Shape, 137Worker, 559
skrótowe, 96, 100transformacji, 510
mieszaniekolorów, 259obrazów, 260
mieszanina, 259migawka, 134
ze sceny, 118migawki asynchroniczne, 135minor, 215mnemoniki, 117mnożenie
macierzy 2D, 194wektora przez macierz, 193
modalność okna, 80model
HSL/HSV, 170RGB, 169RGBA, 169wielokrotnego wyboru, 376wyboru, 380
modularyzacjaJDK, 662kodu, 645
moduł, 28, 645dragons.providers, 657dragons.users, 658math.fibo, 649, 653math.kombi, 651math.primes, 651math.utils, 652message.impl, 659message.serv, 659message.user, 660swarm.main, 655
modułyagregacyjne, 662automatyczne, 663nienazwane, 662otwarte, 656słowa kluczowe, 646
mysztypy zdarzeń, 101, 107
Nnarzędzie
Narrator, 606Scene Builder, 636
Nashorn, 581–585
Oobieg zdarzeń, 93obiekt
ChangeListener, 46ObservableList, 55SimpleListProperty, 64SimpleMapProperty, 66SimpleSetProperty, 66ListProperty, 64Stage, 75, 76Stop, 181
obiekty 3D, 220
Poleć książkęKup książkę
672 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
obramowanie, 301, 308, 313typu BorderImage, 313
obrazy, 485klasa
ImageView, 489PixelFormat, 492PixelReader, 494PixelWriter, 497WritableImage, 496WritablePixelFormat, 493
mieszanie, 260pobieranie, 487powielanie, 496powielanie fragmentu, 497segmenty, 311ramki, 310tworzenie, 499wejściowe, 257wyliczenie PixelFormat.Type,
490wyświetlanie, 515zapisywanie, 500
obrót, 201, 204, 236obsługa
audio i wideo, 523obiektu Optional, 431zdarzeń, 89
odbicie, 251względem prostej, 205, 207
odblask, 250odczyt właściwości, 621odśmiecacz, 52odtwarzacz audio, 535
AudioEqualizer, 536metadane, 535ścieżki, 535wychwytywanie błędów, 535
odtwarzacz wideoczas odtwarzania, 540markery, 539metadane, 537stan odtwarzacza, 540szybkość odtwarzania, 540ścieżki, 537
ogranicznik alignment, 317ograniczniki
HBox, 319VBox, 322
okna, 71drukowania, 642kontrolne, 338podręczne, 337wyboru folderów, 447wyboru plików, 445wyskakujące, 335
oknocentrowanie, 73dekoracja, 84ikona, 82mocowanie, 85modalność, 80pokazywanie, 71położenie, 72przezroczystość, 74rozmiar, 77schemat dziedziczenia, 71sprawdzanie fokusu, 75styl, 78tryb pełnoekranowy, 85tytuł, 82ukrywanie, 71właściciel, 79właściwości, 76wymiary, 72zamknięcie, 83zmiana rozmiarów, 83
opcjadowolna, 404menu, 400radiowa, 404wyboru, 403
operator UnaryOperator, 414operatory w wyrażeniach, 635opieka rodzicielska, 129oświetlenie, Patrz także światłootoczka, 126
Ppakiet
dragons.providers, 657javax.script, 581
paleta16 kolorów nazwanych, 171kolorów, 171
HSL, 172mających polskie nazwy,
172nazwanych CSS, 172nazwanych EN, 172
nazwanych kolorów HSL, 172Web Safe Colors, 171
pamięćzapobieganie wyciekom, 52
paneldzielony, 352przewijany, 351z nazwą, 346zakładek, 354
parametrykonstruktora ArcTo, 161metody Color.web(), 175uruchomieniowe, 34
pasekmenu, 399narzędziowy, 428postępu, 422przewijania, 349przycisków, 359
perspektywa, 262pętla while, 57pivot point, 199plany figury, 225plik module-info.java, 661płótno, 503pobieranie
formatu pikseli, 498koloru piksela, 494wyniku z dialogu, 439
podkręcenie koloru, 255podmacierz, 214
Poleć książkęKup książkę
Skorowidz 673
podpowiedź, 338z grafiką, 340z grafiką i tekstem, 341
pola statyczne klasy DataFormat,547
polehasła, 416powierzchni, 134tekstowe, 411, 417wyboru, 368zawartości, 300
poświata, 251priorytety stylizacji, 574prostokąt, 152
kontur, 153protokoły, 524próbnik
daty, 393koloru, 392
przeciąganiepalcem, 240systemowe, 543
klasa DragEvent, 544przenoszenie HTML, 549przenoszenie obrazów, 550przenoszenie tekstu, 548typy, 543wyliczenie TransferMode,
544przeglądanie stron WWW, 587przeglądarka, 599przejście, 287przekrzywienie, 200przekształcenia, 191
afiniczne, 205przeliczenia
kolorów, 190współrzędnych, 125
przełącznik, 365przenoszenie
HTML, 549obrazów, 550tekstu, 548
przestrzeń kolorów
HSL/HSI/HSD, 170HSV/HSB, 170HWB, 171sRGB, 170
przesunięcie, 196przewijanie, 238przewijarka, 425przezroczystość, 74przycinanie, 130przycisk, 358
menu, 406radiowy, 367rozwijalny, 439
punkt2D, 1923D, 192dotyku, 233
punkty Stop, 183, 187
Rreferencje do kolekcji, 67region, 299
dzieci, 302kształt, 301tworzenie, 302
regułaEVEN_ODD, 164NON_ZERO, 164
renderowanie, 221obrazu tła, 305typu FILL, 222
restart usługi, 567rodzina czcionek, 146role AccessibleRole, 609rozety Grandiego, 520rozkład
brzegowy, 326dialogowy, 434dowolny, 314kafelkowy, 329kotwowy, 328pionowy, 320poziomy, 318
przepływowy, 323siatkowy, 331tekstowy, 325warstwowy, 316
rozmycieGaussa, 249pudełkowe, 248smugowe, 249
rozszerzanie, 241ruch obiektu 3D, 229rysowanie na płótnie, 503
animowany symbol jin-jang,520
atrybut ścieżki, 512atrybuty, 505–507
renderowania, 507–509tekstu, 511
klasa Canvas, 503klasa GraphicsContext, 504rozety Grandiego, 520smok Heighwaya, 517symbol jin-jang, 518szachownica, 516
Sscena, 113, 116
akceleratory, 117arkusze CSS, 120dane użytkownika, 117elementy 2D, 114elementy 3D, 114migawki, 118mnemoniki, 117rozkład elementów, 124ustawianie kursora, 115węzły, 113
scenograf, 113schemat dziedziczenia, Patrz
dziedziczenieschowek systemowy, 547segmenty obrazu, 311selektory, 577
złożone, 578
Poleć książkęKup książkę
674 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
separator, 427opcji, 402
setter setScene(), 75silnik webowy, 588skalowanie, 197, 510skróty klawiaturowe, 608skrypt
JavaScript, 589upraszczanie, 584uruchamiany z pliku, 582uruchamiany ze stringa, 581
słowa kluczowe modułu, 646smok Heighwaya, 517sortowanie, 456
kolekcji, 70stałe klasy
Alert.AlertType, 443ButtonType, 433
standardy CSS, 575stronicowanie, 449strony WWW
klasa WebEngine, 588klasa WebView, 587przeglądanie, 587uchwyty, 590wywołania zwrotne, 589
strumień InputStream, 487styl
DECORATED, 78TRANSPARENT, 78UNDECORATED, 78UNIFIED, 79
stylizacjaokna, 78węzłów, 569
suwak, 423SVG, Scalable Vector Graphics,
165Swing, 601symbol jin-jang, 518system współrzędnych, 123szachownica, 516sześcienna krzywa Béziera, 160szkielet aplikacji, 29
Śścieżka, 160
SVG, 165wyświetlanie, 514
śledzeniewartości, 391ważności zmiennej, 46zmian elementów ArrayList, 57zmian właściwości, 40, 45
światło, 226, 265Light.Distant, 265Light.Point, 266Light.Spot, 266
Ttabela danych, 451
drzewo danych, 469edycja danych, 462fokus, 461klasa MapValueFactory, 455kolumna TableColumn, 453komórka TableCell, 459obiekt zastępczy, 454przewijanie, 463sortowanie, 456wybieranie elementów, 460zagnieżdżanie kolumn, 457zmiana
kolejności kolumn, 455rozmiaru kolumny, 457widoczności, 455
tablice, 62tekst, 147
właściwośćbaselineOffset, 147boundsType, 147font, 148fontSmoothingType, 148lineSpacing, 149strikethrough, 149text, 150textAlignment, 149
textOrigin, 150underline, 150wrappingWidth, 151x, 151
wyświetlanie, 514tło, 301, 304transformacja skalowania, 510transformacje
dołączanie, 210łączenie, 209
translacja, 196transpozycja macierzy, 213tryby mieszania, 257tworzenie
adaptera, 53arraylisty, 56, 58czcionki, 146hashmapy, 61kolekcji, 64kolorów, 173list, 58, 59map, 61migawek, 134obiektu 3D, 220obramowania, 313obrazów, 499regionu, 302tablic, 62usług, 658usług zlokalizowanych, 656wątków, 556zbiorów, 59
typ MIME, 546typy
kursora, 114właściwości, 576zdarzeń, 92, 97
Uuchwyt
confirmHandler, 591createPopupHandler, 593eventHandler, 282
Poleć książkęKup książkę
Skorowidz 675
onAlert, 590onResized, 595onStatusChanged, 596onVisibilityChanged, 596promptHandler, 592zdarzeń, 92, 94, 98, 585
właściwości, 99ułatwienia dostępu, 605
AccessibleRole, 608czytnik ekranowy, 621klasa Platform, 608Narrator, 606odczyt właściwości, 621osoby niedowidzące, 605osoby niesłyszące, 606osoby z niepełnosprawnością
ruchową, 605skróty klawiaturowe, 608tryb wysokiego kontrastu, 622
uruchamianie koduJavaFX, 598JavaScript, 599
usługitworzenie, 658zlokalizowane, 656
ustawianiecyklu, 184kursora dla sceny, 115kursora dla węzła, 115strony, 641
usuwaniefiltrów i uchwytów, 96uchwytów i filtrów zdarzeń, 99
Wwalidacja stanu dialogu, 440wartości CacheHint, 132wartość kluczowa, 282wątek
główny, 555roboczy, 554
wektor punktu2D, 192
mnożenie przez macierz,193
3D, 192mnożenie przez macierz,
193węzły, 569
buforowanie, 131drukowanie, 637granice, 126identyfikacja, 122migawki, 134nagłówka, 438otoczka, 126podział, 122przecięcia, 129przycinanie, 130rozkładowe, 124rozszerzalność, 128widzialność, 122
wiązanie, 583do elementu kolekcji, 68referencji do kolekcji, 67właściwości kolekcji, 66wyrażeń, 635zawartości kolekcji, 67zmiennych, 47
dwustronne, 48jednostronne, 47niskopoziomowe, 51wysokopoziomowe, 50
wideo, 523typy kodowania, 523
widocznośćfigury, 222obiektów, 225
wielkie litery, 416wielodotyk, 234wielokąt, 158wielowątkowość, 553
główny wątek, 555Interface Worker<V>, 557klasa
Executors, 556ScheduledService, 565
Service, 563Task<V>, 559WorkerStateEvent, 557
wyliczenie Worker.State, 556właściwości, 40, 64
indeksowane, 41interfejsu Worker<V>, 558JavaFX, 42klasy
Accordion, 348AudioClip, 526Axis<T>, 472BarChart, 478CategoryAxis, 473Cell, 375CheckBox, 369CheckMenuItem, 403ChoiceBox, 370ComboBox, 389ComboBoxBase, 388Control, 345CustomMenuItem, 405DatePicker, 394Dialog<R>, 435DialogPane, 434DirectoryChooser, 447EqualizerBand, 534FileChooser, 445Hyperlink, 362Image, 487ImageView, 489JobSettings, 639Labeled, 346ListView<T>, 377MediaPlayer, 529MediaView, 532Menu, 402MenuButton, 406MenuItem, 400Node, 620Pagination, 449PhongMaterial, 228PieChart, 475PopupWindow, 336
Poleć książkęKup książkę
676 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
właściwościklasy
ProgressIndicator, 421RadioMenuItem, 404ScheduledService, 565ScrollBar, 349ScrollPane, 351Separator, 428Service, 563Shape, 137Slider, 423SplitPane, 352Spinner, 425Tab, 354TableView, 452TabPane, 355Task<V>, 560TextArea, 417TextField, 412TextFormatter.Change, 414TextInputControl, 409TitledPane, 347ToggleButton, 365ToggleGroup, 366Tooltip, 339TreeView, 466ValueAxis, 473WebView, 587XYChart, 477, 478
okna, 76uchwytów, 99wyznacznika, 212
właściwośćbaselineOffset, 147boundsInLocal, 127boundsInParent, 127boundsType, 147double azimuth, 265double diffuseConstant, 263double specularExponent, 264Duration, 290Effect bumpInput, 263fill, 137focused, 75
font, 148fontSmoothingType, 148globalBlendMode, 509hgrow, 319id, 573layoutBounds, 126lineSpacing, 149onCloseRequest, 99onHidden, 99onHiding, 99onShowing, 99onShown, 99opacity, 74preserveRatio, 486scene, 75showing, 75smooth, 138strikethrough, 149strokeDashOffset, 138strokeLineCap, 139strokeLineJoin, 139strokeMiterLimit, 140strokeType, 141strokeWidth, 141style, 573text, 150textAlignment, 149textOrigin, 150underline, 150vgrow, 322x, 151
wskaźnik postępu, 421, 422współrzędne
bezwzględne, 186ekranowe, 123względne, 182
wtapianie w tło, 261wyciek pamięci, 52wycinek koła, 155wyjątek
NoSuchElementException, 430wykres, 472
bąbelkowy, 482kołowy, 474
liniowy, 481paskowy, 478paskowy skumulowany, 479powierzchniowy, 483punktowy, 480warstwowy, 484
wyliczenie, 315AccessibleAction, 619AccessibleAttribute, 614AccessibleRole, 608BlendMode, 257mediaPlayer.Status, 531PixelFormat.Type, 490TransferMode, 544Worker.State, 556
wypełnieniefigury deseniem, 179obrazem, 178tła, 304
wyrażenia lambda, 34wyświetlacz, 73wyświetlanie
kształtów, 513obrazów, 515okna drukowania, 642okna ustawień strony, 641ścieżek, 514tekstu, 514
wywołania zwrotne interfejsu, 589wyznacznik macierzy, 211
Zzadanie drukowania, 641zakładka, 353zależności cykliczne, 646zamiana liczb, 491zarządcy rozkładów, 313zawieszanie aplikacji, 553zbiory, 59zdarzenia, 89, 91
cel, 92dotyku, 232, 233edycji, 387
Poleć książkęKup książkę
Skorowidz 677
faza bąbelkowania, 94faza przechwytywania, 93filtry, 94, 98gestów, 235, 242klawiatury, 110konsumpcja, 95łańcuch dyspozytorów, 97metody skrótowe, 96, 100myszy, 101, 242obieg, 93obrotu, 236okien WindowEvent, 97przeciągania palcem, 240, 241przewijania, 238rozszerzania, 241typy, 92, 97uchwyty, 92, 94, 98usuwanie filtrów i uchwytów,
96wejścia, 100wielodotykowe, 234
zdarzenie
DragEvent, 544EventDispatcher, 97InputEvent, 100KeyEvent, 110MouseDragEvent, 107MouseEvent, 101promptHandler, 593TransformChangeEvent, 209
ziarenkaJavaBean, 39JavaFX, 43, 44
złożona lista wyboru, 389zmiana
jasności, 176kolejności kolumn, 455nasycenia, 176perspektywy, 262położenia w scenografie, 132rozmiarów kolumny, 457rozmiarów okna, 83stylu w kodzie, 571typu kalendarza, 396
w arrayliście, 56w hashmapie, 61w tablicy, 63w zbiorze, 60właściwości, 40, 45
zmiennaR, 44R/W, 43
zmienneśledzenie ważności, 46
znacznik<fx:constant>, 631<fx:copy>, 632<fx:define>, 631<fx:include>, 630<fx:reference>, 631<fx:root>, 633<fx:script>, 626
znaczniki metadanych, 525znak @, 633
Poleć książkęKup książkę
678 JavaFX 9. Tworzenie graficznych interfejsów użytkownika
Poleć książkęKup książkę