DZone
Java Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Java Zone > Hello JavaFX 2.0: Introduction by Command Line

Hello JavaFX 2.0: Introduction by Command Line

Dustin Marx user avatar by
Dustin Marx
·
Dec. 17, 11 · Java Zone · Interview
Like (0)
Save
Tweet
8.89K Views

Join the DZone community and get the full member experience.

Join For Free

I looked at a simple JavaFX version of the ubiquitous Hello World example from a NetBeans 7.1 beta perspective in the blog post Hello JavaFX 2.0: Introduction by NetBeans 7.1 beta. In this post, I look at a slightly different version of Hello World implemented with JavaFX using only command-line tools.

The JavaFX 2.0 API documentation includes the class description for the javafx.application.Application class and this is a good place to start. The Javadoc documentation for the Application class provides an example of an effective class usage description. This class description describes a JavaFX application's life cycle and even provides a code sample with an image showing how the sample renders. I'll work up to that same sample in this post.

The Application class's Javadoc documentation describes the central role of this class: "Application class from which JavaFX applications extend." The start(Stage) method is the most interesting in the Application class as it is the "main entry point for all JavaFX applications." It is an abstract method and so must be overridden by extending classes. The next code listing shows a minimal implementation that will compile but not do anything (it doesn't even have a main function).

HelloWorld.java (I: Bare Minimum)
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.");
   }
}

The previous code snippet shows the importing of two JavaFX classes (Application and Stage) When the above code is compiled with javac without placing the JavaFX libraries on the classpath, errors similar to the following occur.

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

The obvious solution is to place the apropos JavaFX library on the classpath of the compiler. In my case, the JavaFX SDK and JAR needed to build this code is C:\Program Files\Oracle\JavaFX 2.0 SDK\rt\lib\jfxrt.jar.

The next code listing builds upon the previous code snippet and is adapted from the example provided in the Application class's class-level Javadoc documentation.

HelloWorld.java (II: Adapted from Application's Javadoc)

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();
   }
}

The JavaFX application shown above can be deployed to a web browser, but I'm going to instead focus on running it from the command line. To do this, a main function is added to the JavaFX application as shown in the next version.

HelloWorld.java (III: Added 'main' Function)
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);
   }
}

Only a single line is required in the main function. That line is a call to the static method Application.launch(String...) with the command-line arguments passed to it. This application can now be executed and appears as shown in the screen snapshot that follows.

Conclusion

This blog post has demonstrated writing and running a simple JavaFX application using only command-line tools. Proving that JavaFX 2.0 has put the 'Java' back into JavaFX, the examples in this post were compiled and executed with the typical Java compiler and Java launcher used for "normal" Java application. More complex JavaFX applications may benefit from more specific tools, but this one was compiled and executed solely with the standard Java tools.

 

From http://marxsoftware.blogspot.com/2011/12/hello-javafx-20-introduction-by-command.html

JavaFX application Command (computing)

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Progressive Web Apps vs Native Apps: Differences and Similarities
  • Blocking Ads on Your Network Using Raspberry Pi 3 + Fedora + Pi-hole
  • Internal Developer Platform in Plain English
  • What Emerging Technologies Make Data Centers More Energy Efficient?

Comments

Java Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo