50

Wszelkie prawa zastrzeżone. Nieautoryzowane ... · 8 JavaFX 9. Tworzenie graficznych interfejsów użytkownika Linia łamana (Polyline

Embed Size (px)

Citation preview

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ę