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 exist import javafx.application.Application; ^ HelloWorld.java: 4 : error: package javafx.stage does not exist import javafx.stage.Stage; ^ HelloWorld.java: 11 : error: cannot find symbol public class HelloWorld extends Application ^ symbol: class Application HelloWorld.java: 14 : error: cannot find symbol public void start( final Stage stage) throws Exception ^ symbol: class Stage location: class HelloWorld HelloWorld.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…) с переданными ему аргументами командной строки. Это приложение теперь может быть выполнено и выглядит так, как показано на снимке экрана ниже.