JavaFX - aplikacja
W tym rozdziale omówimy szczegółowo strukturę aplikacji JavaFX, a także nauczymy się tworzyć aplikacje JavaFX na przykładzie.
Struktura aplikacji JavaFX
Ogólnie rzecz biorąc, aplikacja JavaFX będzie miała trzy główne komponenty, a mianowicie Stage, Scene i Nodes jak pokazano na poniższym schemacie.
Etap
Scena (okno) zawiera wszystkie obiekty aplikacji JavaFX. Jest reprezentowany przezStage klasa pakietu javafx.stage. Etap podstawowy jest tworzony przez samą platformę. Utworzony obiekt etapu jest przekazywany jako argument dostart() metoda Application klasa (wyjaśnione w następnej sekcji).
Etap ma dwa parametry określające jego położenie, a mianowicie Width i Height. Jest podzielony na obszar zawartości i dekoracje (pasek tytułu i obramowanie).
Dostępnych jest pięć typów etapów -
- Decorated
- Undecorated
- Transparent
- Unified
- Utility
Musisz zadzwonić do show() , aby wyświetlić zawartość etapu.
Scena
Scena reprezentuje fizyczną zawartość aplikacji JavaFX. Zawiera całą zawartość wykresu sceny. KlasaScene pakietu javafx.scenereprezentuje obiekt sceny. Na przykład obiekt sceny jest dodawany tylko do jednego etapu.
Możesz utworzyć scenę, tworząc instancję klasy sceny. Możesz wybrać rozmiar sceny, przekazując jej wymiary (wysokość i szerokość) wraz z rozszerzeniemroot node do swojego konstruktora.
Wykres sceny i węzły
ZA scene graphjest drzewiastą strukturą danych (hierarchiczną) reprezentującą zawartość sceny. W przeciwieństwie do tego anode jest wizualnym / graficznym obiektem wykresu sceny.
Węzeł może zawierać -
Obiekty geometryczne (graficzne) (2D i 3D), takie jak - Okrąg, Prostokąt, Wielokąt itp.
Elementy sterujące interfejsu użytkownika, takie jak - przycisk, pole wyboru, pole wyboru, obszar tekstowy itp.
Kontenery (panele układu), takie jak okienko graniczne, okienko siatki, okienko przepływu itp.
Elementy multimedialne, takie jak obiekty audio, wideo i obrazy.
Plik Node Klasa pakietu javafx.scene reprezentuje węzeł w JavaFX, ta klasa jest superklasą wszystkich węzłów.
Jak wspomniano wcześniej, węzeł ma trzy typy -
Root Node - Pierwszy wykres sceny jest znany jako węzeł główny.
Branch Node/Parent Node- Węzeł z węzłami podrzędnymi nazywany jest węzłami gałęzi / nadrzędnymi. Klasa abstrakcyjna o nazwieParent pakietu javafx.scene jest klasą bazową wszystkich węzłów nadrzędnych, a te węzły nadrzędne będą następujących typów -
Group- Węzeł grupy to zbiorczy węzeł zawierający listę węzłów potomnych. Za każdym razem, gdy węzeł grupy jest renderowany, wszystkie jego węzły potomne są renderowane w kolejności. Każda transformacja, stan efektu zastosowany do grupy zostanie zastosowany do wszystkich węzłów potomnych.
Region - Jest to klasa bazowa wszystkich kontrolek UI opartych na JavaFX Node, takich jak Chart, Pane i Control.
WebView - Ten węzeł zarządza silnikiem internetowym i wyświetla jego zawartość.
Leaf Node- Węzeł bez węzłów potomnych jest nazywany węzłem liścia. Na przykład Rectangle, Ellipse, Box, ImageView, MediaView to przykłady węzłów liści.
Konieczne jest przekazanie węzła głównego do wykresu sceny. Jeśli Grupa zostanie przekazana jako root, wszystkie węzły zostaną przycięte do sceny, a każda zmiana rozmiaru sceny nie wpłynie na układ sceny.
Tworzenie aplikacji JavaFX
Aby utworzyć aplikację JavaFX, musisz utworzyć instancję klasy Application i zaimplementować jej metodę abstrakcyjną start(). W tej metodzie napiszemy kod dla aplikacji JavaFX.
Klasa aplikacji
Plik Application klasa pakietu javafx.applicationto punkt wejścia aplikacji w JavaFX. Aby utworzyć aplikację JavaFX, musisz odziedziczyć tę klasę i zaimplementować jej metodę abstrakcyjnąstart(). W tej metodzie musisz napisać cały kod dla grafiki JavaFX
w main musisz uruchomić aplikację przy użyciu launch()metoda. Ta metoda wewnętrznie wywołujestart() metoda klasy Application, jak pokazano w poniższym programie.
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
/*
Code for JavaFX application.
(Stage, scene, scene graph)
*/
}
public static void main(String args[]){
launch(args);
}
}
W ramach start() metoda, aby stworzyć typową aplikację JavaFX, należy postępować zgodnie z poniższymi krokami -
Przygotuj wykres sceny z wymaganymi węzłami.
Przygotuj scenę z wymaganymi wymiarami i dodaj do niej wykres sceny (węzeł główny wykresu sceny).
Przygotuj scenę i dodaj scenę do sceny i wyświetl zawartość sceny.
Przygotowanie wykresu sceny
Zgodnie z Twoją aplikacją musisz przygotować wykres sceny z wymaganymi węzłami. Ponieważ węzeł główny jest pierwszym węzłem, musisz utworzyć węzeł główny. Jako węzeł główny możesz wybrać spośródGroup, Region or WebView.
Group - Węzeł grupy jest reprezentowany przez nazwaną klasę Group który należy do pakietu javafx.scene, możesz utworzyć węzeł grupy, tworząc wystąpienie tej klasy, jak pokazano poniżej.
Group root = new Group();
Plik getChildren() metoda Group class daje obiekt klasy ObservableListklasa przechowująca węzły. Możemy pobrać ten obiekt i dodać do niego węzły, jak pokazano poniżej.
//Retrieving the observable list object
ObservableList list = root.getChildren();
//Setting the text object as a node
list.add(NodeObject);
Możemy również dodawać obiekty Node do grupy, po prostu przekazując je do pliku Group class i do jej konstruktora w momencie tworzenia instancji, jak pokazano poniżej.
Group root = new Group(NodeObject);
Region - Jest to klasa podstawowa wszystkich kontrolek interfejsu użytkownika opartych na węzłach JavaFX, takich jak -
Chart - Ta klasa jest klasą bazową wszystkich wykresów i należy do pakietu javafx.scene.chart.
Ta klasa ma dwie podklasy, którymi są - PieChart i XYChart. Te dwie z kolei mają podklasy, takie jakAreaChart, BarChart, BubbleChartitp. używane do rysowania różnych typów wykresów XY-Plane w JavaFX.
Możesz używać tych klas do osadzania wykresów w swojej aplikacji.
Pane - Panel jest klasą bazową wszystkich paneli układu, takich jak AnchorPane, BorderPane, DialogPaneitd. Ta klasa należy do pakietu o nazwie - javafx.scene.layout.
Możesz używać tych klas do wstawiania predefiniowanych układów w swojej aplikacji.
Control - Jest to klasa bazowa formantów interfejsu użytkownika, takich jak Accordion, ButtonBar, ChoiceBox, ComboBoxBase, HTMLEditor, etc. This class belongs to the package javafx.scene.control.
Możesz użyć tych klas, aby wstawić różne elementy interfejsu użytkownika do aplikacji.
W grupie możesz utworzyć instancję dowolnej z wyżej wymienionych klas i używać ich jako węzłów głównych, jak pokazano w poniższym programie.
//Creating a Stack Pane
StackPane pane = new StackPane();
//Adding text area to the pane
ObservableList list = pane.getChildren();
list.add(NodeObject);
WebView - Ten węzeł zarządza silnikiem internetowym i wyświetla jego zawartość.
Poniżej znajduje się diagram przedstawiający hierarchię klas węzłów w JavaFX.
Przygotowanie sceny
Scena JavaFX jest reprezentowana przez Scene klasa pakietu javafx.scene. Możesz utworzyć scenę, tworząc wystąpienie tej klasy, jak pokazano w poniższym bloku cod.
Podczas tworzenia instancji konieczne jest przekazanie obiektu głównego do konstruktora klasy sceny.
Scene scene = new Scene(root);
Możesz również przekazać dwa parametry podwójnego typu reprezentujące wysokość i szerokość sceny, jak pokazano poniżej.
Scene scene = new Scene(root, 600, 300);
Przygotowanie sceny
Jest to kontener każdej aplikacji JavaFX i udostępnia okno aplikacji. Jest reprezentowany przezStage klasa pakietu javafx.stage. Obiekt tej klasy jest przekazywany jako parametr klasystart() metoda Application klasa.
Za pomocą tego obiektu możesz wykonywać różne operacje na scenie. Przede wszystkim możesz wykonać następujące czynności -
Za pomocą tej metody ustaw tytuł sceny setTitle().
Dołącz obiekt sceny do sceny za pomocą setScene() metoda.
Wyświetl zawartość sceny za pomocą show() metoda, jak pokazano poniżej.
//Setting the title to Stage.
primaryStage.setTitle("Sample application");
//Setting the scene to Stage
primaryStage.setScene(scene);
//Displaying the stage
primaryStage.show();
Cykl życia aplikacji JavaFX
Klasa aplikacji JavaFX ma trzy metody cyklu życia, którymi są:
start() - Metoda punktu wejścia, w której ma zostać zapisany kod graficzny JavaFX.
stop() - Pusta metoda, którą można nadpisać, tutaj możesz napisać logikę zatrzymującą aplikację.
init() - Pusta metoda, którą można nadpisać, ale w tej metodzie nie można utworzyć sceny ani sceny.
Oprócz tego zapewnia statyczną metodę o nazwie launch() aby uruchomić aplikację JavaFX.
Ponieważ launch()metoda jest statyczna, musisz ją wywołać z kontekstu statycznego (ogólnie głównego). Za każdym razem, gdy uruchamiana jest aplikacja JavaFX, wykonywane będą następujące czynności (w tej samej kolejności).
Tworzona jest instancja klasy aplikacji.
Init() wywoływana jest metoda.
Plik start() wywoływana jest metoda.
Program uruchamiający czeka na zakończenie aplikacji i wywołuje plik stop() metoda.
Zakończenie aplikacji JavaFX
Zamknięcie ostatniego okna aplikacji powoduje niejawne zakończenie działania aplikacji JavaFX. Możesz wyłączyć to zachowanie, przekazując wartość logiczną „False” do metody statycznej setImplicitExit() (należy wywołać z kontekstu statycznego).
Aplikację JavaFX można zamknąć jawnie przy użyciu metod Platform.exit() lub System.exit(int).
Przykład 1 - Tworzenie pustego okna
W tej sekcji przedstawiono sposób tworzenia przykładowej aplikacji JavaFX, która wyświetla puste okno. Oto kroki -
Krok 1: Tworzenie klasy
Utwórz klasę Java i dziedzicz Application klasa pakietu javafx.application i zaimplementuj metodę start () tej klasy w następujący sposób.
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Krok 2: Tworzenie obiektu grupowego
w start() tworzy obiekt grupy, tworząc wystąpienie klasy o nazwie Group, która należy do pakietu javafx.scenew następujący sposób.
Group root = new Group();
Krok 3: Tworzenie obiektu sceny
Utwórz scenę, tworząc wystąpienie klasy o nazwie Scene który należy do pakietu javafx.scene. Do tej klasy przekaż obiekt Group(root)utworzony w poprzednim kroku.
Oprócz obiektu głównego można również przekazać dwa podwójne parametry reprezentujące wysokość i szerokość ekranu wraz z obiektem klasy Group w następujący sposób.
Scene scene = new Scene(root,600, 300);
Krok 4: Ustawianie tytułu sceny
Możesz ustawić tytuł sceny za pomocą setTitle() metoda Stageklasa. PlikprimaryStage jest obiektem Stage, który jest przekazywany do metody start klasy sceny jako parametr.
Używając primaryStage ustaw tytuł sceny jako Sample Application jak pokazano niżej.
primaryStage.setTitle("Sample Application");
Krok 5: Dodawanie sceny do sceny
Za pomocą tej metody można dodać obiekt Scene do sceny setScene() klasy o nazwie Stage. Dodaj obiekt Scena przygotowany w poprzednich krokach przy użyciu tej metody, jak pokazano poniżej.
primaryStage.setScene(scene);
Krok 6: Wyświetlanie zawartości stołu montażowego
Wyświetl zawartość sceny za pomocą metody o nazwie show() z Stage klasę w następujący sposób.
primaryStage.show();
Krok 7: Uruchomienie aplikacji
Uruchom aplikację JavaFX, wywołując metodę statyczną launch() z Application klasa z metody głównej w następujący sposób.
public static void main(String args[]){
launch(args);
}
Przykład
Poniższy program generuje puste okno JavaFX. Zapisz ten kod w pliku o nazwieJavafxSample.java
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//creating a Group object
Group group = new Group();
//Creating a Scene by passing the group object, height and width
Scene scene = new Scene(group ,600, 300);
//setting color to the scene
scene.setFill(Color.BROWN);
//Setting the title to Stage.
primaryStage.setTitle("Sample Application");
//Adding the scene to Stage
primaryStage.setScene(scene);
//Displaying the contents of the stage
primaryStage.show();
}
public static void main(String args[]){
launch(args);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
javac JavafxSample.java
java JavafxSample
Podczas wykonywania powyższy program generuje okno JavaFX, jak pokazano poniżej.
Przykład 2 - Rysowanie prostej linii
W poprzednim przykładzie widzieliśmy, jak utworzyć pusty etap, teraz w tym przykładzie spróbujmy narysować linię prostą za pomocą biblioteki JavaFX.
Oto kroki -
Krok 1: Tworzenie klasy
Utwórz klasę Java i dziedzicz Application klasa pakietu javafx.application i zaimplementuj start() metoda tej klasy w następujący sposób.
public class DrawingLine extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Krok 2: Tworzenie linii
Możesz utworzyć wiersz w JavaFX, tworząc wystąpienie klasy o nazwie Line który należy do pakietu javafx.scene.shape, utwórz wystąpienie tej klasy w następujący sposób.
//Creating a line object
Line line = new Line();
Krok 3: Ustawianie właściwości dla linii
Określ współrzędne, aby narysować linię na płaszczyźnie XY, ustawiając właściwości startX, startY, endX i endY, używając odpowiednich metod ustawiających, jak pokazano w poniższym bloku kodu.
line.setStartX(100.0);
line.setStartY(150.0);
line.setEndX(500.0);
line.setEndY(150.0);
Krok 4: Tworzenie obiektu grupowego
W metodzie start () utwórz obiekt grupy, tworząc instancję klasy o nazwie Group, która należy do pakietu javafx.scene.
Przekaż utworzony w poprzednim kroku obiekt Line (node) jako parametr do konstruktora klasy Group, aby dodać go do grupy w następujący sposób -
Group root = new Group(line);
Krok 5: Tworzenie obiektu sceny
Utwórz scenę, tworząc wystąpienie klasy o nazwie Scene który należy do pakietu javafx.scene. Do tej klasy przekaż obiekt Group(root) który został utworzony w poprzednim kroku.
Oprócz obiektu głównego można również przekazać dwa podwójne parametry reprezentujące wysokość i szerokość ekranu wraz z obiektem klasy Group w następujący sposób.
Scene scene = new Scene(group ,600, 300);
Krok 6: Ustawianie tytułu sceny
Możesz ustawić tytuł sceny za pomocą setTitle() metoda Stageklasa. PlikprimaryStage jest obiektem Stage, który jest przekazywany do metody start klasy sceny jako parametr.
Używając primaryStage ustaw tytuł sceny jako Sample Application następująco.
primaryStage.setTitle("Sample Application");
Krok 7: Dodawanie sceny do sceny
Za pomocą tej metody można dodać obiekt Scene do sceny setScene() klasy o nazwie Stage. Dodaj obiekt Scene przygotowany w poprzednich krokach, używając tej metody w następujący sposób.
primaryStage.setScene(scene);
Krok 8: Wyświetlanie zawartości stołu montażowego
Wyświetl zawartość sceny za pomocą metody o nazwie show() z Stage klasę w następujący sposób.
primaryStage.show();
Krok 9: Uruchomienie aplikacji
Uruchom aplikację JavaFX, wywołując metodę statyczną launch() z Application klasa z metody głównej w następujący sposób.
public static void main(String args[]){
launch(args);
}
Przykład
Poniższy program pokazuje, jak wygenerować linię prostą za pomocą JavaFX. Zapisz ten kod w pliku o nazwieJavafxSample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class DrawingLine extends Application{
@Override
public void start(Stage stage) {
//Creating a line object
Line line = new Line();
//Setting the properties to a line
line.setStartX(100.0);
line.setStartY(150.0);
line.setEndX(500.0);
line.setEndY(150.0);
//Creating a Group
Group root = new Group(line);
//Creating a Scene
Scene scene = new Scene(root, 600, 300);
//Setting title to the scene
stage.setTitle("Sample application");
//Adding the scene to the stage
stage.setScene(scene);
//Displaying the contents of a scene
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
javac DrawingLine.java
java DrawingLine
Podczas wykonywania powyższy program generuje okno JavaFX wyświetlające linię prostą, jak pokazano poniżej.
Przykład 3 - wyświetlanie tekstu
Możemy również osadzić tekst w scenie JavaFX. Ten przykład pokazuje, jak osadzić tekst w JavaFX.
Oto kroki -
Krok 1: Tworzenie klasy
Utwórz klasę Java i dziedzicz Application klasa pakietu javafx.application i zaimplementuj start() metoda tej klasy w następujący sposób.
public class DrawingLine extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Krok 2: Osadzanie tekstu
Możesz osadzić tekst w scenie JavaFX, tworząc wystąpienie klasy o nazwie Text który należy do pakietu javafx.scene.shape, utwórz wystąpienie tej klasy.
Możesz utworzyć wystąpienie tej klasy, przekazując tekst do osadzenia w formacie String. Możesz też utworzyć obiekt tekstowy przy użyciu domyślnego konstruktora, jak pokazano poniżej.
//Creating a Text object
Text text = new Text();
Krok 3: Ustawianie czcionki
Możesz ustawić czcionkę tekstu za pomocą setFont() metoda Textklasa. Ta metoda akceptuje obiekt czcionki jako parametry. Ustaw czcionkę podanego tekstu na 45, jak pokazano poniżej.
//Setting font to the text
text.setFont(new Font(45));
Krok 4: Ustawianie pozycji tekstu
Możesz ustawić położenie tekstu na płaszczyźnie XY, ustawiając współrzędne X, Y za pomocą odpowiednich metod ustawiających setX() i setY() następująco.
//setting the position of the text
text.setX(50);
text.setY(150);
Krok 5: Ustawianie tekstu do dodania
Tekst do dodania można ustawić za pomocą metody setText () klasy Text. Ta metoda akceptuje parametr ciągu reprezentujący tekst do dodania.
text.setText("Welcome to Tutorialspoint");
Krok 6: Tworzenie obiektu grupowego
w start() metoda, utwórz obiekt grupy, tworząc wystąpienie klasy o nazwie Group, która należy do pakietu javafx.scene.
Przekaż utworzony w poprzednim kroku obiekt Text (node) jako parametr do konstruktora klasy Group, aby dodać go do grupy w następujący sposób -
Group root = new Group(text)
Krok 7: Tworzenie obiektu sceny
Utwórz scenę, tworząc wystąpienie klasy o nazwie Scene który należy do pakietu javafx.scene. Do tej klasy przekaż obiekt Group(root)utworzony w poprzednim kroku.
Oprócz obiektu głównego można również przekazać dwa podwójne parametry reprezentujące wysokość i szerokość ekranu wraz z obiektem klasy Group w następujący sposób.
Scene scene = new Scene(group ,600, 300);
Krok 8: Ustawianie tytułu sceny
Możesz ustawić tytuł sceny za pomocą setTitle() metoda Stageklasa. PlikprimaryStage jest obiektem Stage, który jest przekazywany do metody start klasy sceny jako parametr.
Używając primaryStage ustaw tytuł sceny jako Sample Application jak pokazano niżej.
primaryStage.setTitle("Sample Application");
Krok 9: Dodawanie sceny do sceny
Za pomocą tej metody można dodać obiekt Scene do sceny setScene() klasy o nazwie Stage. Dodaj obiekt Scene przygotowany w poprzednich krokach, używając tej metody w następujący sposób.
primaryStage.setScene(scene);
Krok 10: Wyświetlanie zawartości sceny
Wyświetl zawartość sceny za pomocą metody o nazwie show() z Stage klasę w następujący sposób.
primaryStage.show();
Krok 11: Uruchomienie aplikacji
Uruchom aplikację JavaFX, wywołując metodę statyczną launch() z Application klasa z metody głównej w następujący sposób.
public static void main(String args[]){
launch(args);
}
Przykład
Poniżej znajduje się program do wyświetlania tekstu za pomocą JavaFX. Zapisz ten kod w pliku o nazwieDisplayingText.java.
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class DisplayingText extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting font to the text
text.setFont(new Font(45));
//setting the position of the text
text.setX(50);
text.setY(150);
//Setting the text to be added.
text.setText("Welcome to Tutorialspoint");
//Creating a Group object
Group root = new Group();
//Retrieving the observable list object
ObservableList list = root.getChildren();
//Setting the text object as a node to the group object
list.add(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Sample Application");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
javac DisplayingText.java
java DisplayingText
Podczas wykonywania powyższy program generuje okno JavaFX wyświetlające tekst, jak pokazano poniżej.