main ). HelloWorld.java (I: Минимум голой)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
package dustin.examples;import javafx.application.Application;import javafx.stage.Stage;/** * Simple JavaFX Hello World example. * * @author Dustin */public class HelloWorld extends Application{ @Override public void start(final Stage stage) throws Exception { throw new UnsupportedOperationException("JavaFX example not supported yet."); }} |
В предыдущем фрагменте кода показан импорт двух классов JavaFX ( Application и Stage ). Когда приведенный выше код скомпилирован с использованием javac без размещения библиотек JavaFX в пути к классам, возникают ошибки, подобные следующим.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
HelloWorld.java:3: error: package javafx.application does not existimport javafx.application.Application; ^HelloWorld.java:4: error: package javafx.stage does not existimport javafx.stage.Stage; ^HelloWorld.java:11: error: cannot find symbolpublic class HelloWorld extends Application ^ symbol: class ApplicationHelloWorld.java:14: error: cannot find symbol public void start(final Stage stage) throws Exception ^ symbol: class Stage location: class HelloWorldHelloWorld.java:13: error: method does not override or implement a method from a supertype @Override ^5 errors |
Очевидное решение — разместить подходящую библиотеку JavaFX на пути к классам компилятора. В моем случае JavaFX SDK и JAR, необходимые для создания этого кода, это C: \ Program Files \ Oracle \ JavaFX 2.0 SDK \ rt \ lib \ jfxrt.jar .
Следующий листинг кода основан на предыдущем фрагменте кода и адаптирован из примера, приведенного в документации Javadoc на уровне класса приложения .
HelloWorld.java (II: адаптировано из Javadoc приложения)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package dustin.examples;import javafx.application.Application;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.shape.Circle;import javafx.stage.Stage;/** * Simple JavaFX Hello World example. * * @author Dustin */public class HelloWorld extends Application{ @Override public void start(final Stage stage) throws Exception { final Circle circ = new Circle(40, 40, 30); final Group root = new Group(circ); final Scene scene = new Scene(root, 400, 300); stage.setTitle("Hello JavaFX 2.0!"); stage.setScene(scene); stage.show(); }} |
Приложение JavaFX, показанное выше, может быть развернуто в веб-браузере , но я вместо этого сосредоточусь на запуске его из командной строки. Для этого в приложение JavaFX добавляется основная функция, как показано в следующей версии.
HelloWorld.java (III: добавлена основная функция)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package dustin.examples;import javafx.application.Application;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.shape.Circle;import javafx.stage.Stage;/** * Simple JavaFX Hello World example. * * @author Dustin */public class HelloWorld extends Application{ @Override public void start(final Stage stage) throws Exception { final Circle circ = new Circle(40, 40, 30); final Group root = new Group(circ); final Scene scene = new Scene(root, 400, 300); stage.setTitle("Hello JavaFX 2.0!"); stage.setScene(scene); stage.show(); } /** * Main function used to run JavaFX 2.0 example. * * @param arguments Command-line arguments: none expected. */ public static void main(final String[] arguments) { Application.launch(arguments); }} |
В main функции требуется только одна строка. Эта строка является вызовом статического метода Application.launch (String…) с переданными ему аргументами командной строки. Это приложение теперь может быть выполнено и выглядит так, как показано на снимке экрана ниже.
