Now that we're getting close to the Technology Preview Release of the JavaFX SDK, the classes that have been created so far have been organized into a more fine-grained package structure. The impact is mainly in the import statements as you can see in this updated Hello/Goodbye example from a previous post. As a quick reference, the list below contains the packages in JavaFX and the classes that are contained in each package. By the way, you can download the latest Technology Preview Release here
and see the API documentation in more detail.
javafx.application
- Applet
- Application
- Dialog
- Frame
- Window
javafx.animation
- Interpolatable
- Interpolator
- KeyFrame
- KeyValue
- SimpleInterpolator
- Timeline
javafx.async
- AbstractAsyncOperation
- RemoteTextDocument
javafx.ext.swing
- AbstractButton
- AbstractPanel
- BorderPanel
- Button
- Canvas
- CheckBox
- CheckBoxMenuItem
- Cluster
- ClusterElement
- ClusterPanel
- ComboBox
- ComboBoxItem
- Component
- ComponentView
- Container
- ContainerGap
- Dialog
- FlowPanel
- Frame
- Gap
- GridPanel
- Icon
- Label
- Layout
- Layout.Alignment
- Layout.Relationship
- List
- ListItem
- Menu
- MenuItem
- Panel
- ParallelCluster
- PreferredGap
- RadioButton
- RadioButtonMenuItem
- ScrollPane
- ScrollableComponent
- SelectableButton
- SequentialCluster
- Slider
- TextField
- ToggleButton
- ToggleGroup
- Window
javafx.input
- KeyCode
- KeyEvent
- MouseEvent
javafx.lang
- DeferredTask
- Duration
- Sequences
javafx.scene
- Cursor
- CustomNode
- Font
- FontStyle
- Group
- HorizontalAlignment
- Node
- Orientation
- VerticalAlignment
javafx.scene.image
- Image
- ImageView
javafx.scene.paint
- Color
- CycleMethod
- LinearGradient
- Paint
- RadialGradient
- Stop
javafx.scene.transform
- Affine
- Rotate
- Scale
- Shear
- Transform
- Translate
javafx.scene.layout
- HBox
- VBox
javafx.scene.geometry
- Arc
- ArcTo
- ArcType
- Circle
- ClosePath
- CubicCurve
- CurveTo
- DelegateShape
- Ellipse
- FillRule
- HLineTo
- Line
- LineTo
- MoveTo
- Path
- PathElement
- Polygon
- Polyline
- QuadCurve
- QuadTo
- Rectangle
- SVGPath
- Shape
- ShapeIntersect
- ShapeSubtract
- StrokeLineCap
- StrokeLineJoin
- VLineTo
javafx.scene.text
- Text
- TextOrigin
javafx.scene.media
- Media
- MediaError
- MediaPlayer
- MediaTimer
- MediaView
javafx.scene.effect
- Blend
- BlendMode
- Bloom
- ColorAdjust
- DisplacementMap
- DropShadow
- Effect
- FloatMap
- Flood
- GaussianBlur
- Glow
- Identity
- InnerShadow
- InvertMask
- Lighting
- MotionBlur
- PerspectiveTransform
- Reflection
- SepiaTone
- Shadow
- Source
javafx.scene.effect.light
- DistantLight
- Light
- PointLight
- SpotLight
javafx.util
- StringLocalizer
Some Other Recent/Upcoming Changes
There have been a couple of changes to JavaFX language syntax recently:
- The "not equals" operator used to be <> but has been changed to the Java-style !=
- The modulus (remainder) operator has been changed from % to mod.
Also, a new web services library is in the works that will make it even easier to communicate with remote services required by your application. As a result, the JSON and XML libraries are being pruned from the Technical Preview Release branch, but they are still available in the SVN repository if you need them. You can read the current thinking about the web services library in this message on the dev@openjfx-compiler.dev.java.net mailing list. As is typical with JavaFX libraries, the likely outcome will be a simplification of the design in that message.
Finally, I'd like to point out something that is very exciting to me -- the fact that JavaFX is migrating to a "node-centric" approach. As you may know, underneath the covers of the JavaFX UI for the desktop are Java Swing (components) and Java2D classes (graphical nodes). Eventually, most UI constructs in JavaFX will be graphical nodes, including the components (e.g. Button) and layout panels (e.g. BorderPanel). This will eliminate the need for using "adapter" classes like Canvas (to place a node on a panel) and ComponentView (to place a component on a Canvas). This will also make it easier to create UIs that have an "iPhone look and feel" that users will increasingly expect. As you can see by the fact that Dialog, Frame and Window exist in two packages (javafx.application and javafx.ext.swing), this migration has already begun. An examination of the JavaFX documentation for the Frame class in the javafx.application package, for example, will show you that the content attribute of its Window superclass contains a sequence of Node objects. Compare this with the Frame class in the java.ext.swing package whose Window superclass has a content attribute that still contains a sequence of Component objects. The latter, by the way, will be around at least until the migration to a node-centric UI is complete.
Have fun, and please post a comment if you have any questions!
Jim Weaver
JavaFX Script: Dynamic Java Scripting for Rich Internet/Client-side Applications
Immediate eBook (PDF) download available at the book's Apress site
I miss the TextArea component and a multi line label.
Posted by: Silveira Neto | July 23, 2008 at 07:47 PM
The demos won't compile outside netbeans!
First:
-do-compile:
[javac] Compiling 2 source files to /Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/Assortis/build/classes
[javac] /Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/Assortis/src/assortis/core/ProjectManager.java:136: package org.jvnet.substance.fonts does not exist
[javac] org.jvnet.substance.SubstanceLookAndFeel.setFontPolicy(org.jvnet.substance.fonts.SubstanceFontUtilities.getScaledFontPolicy(1.25f));
[javac] ^
[javac] /Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/Assortis/src/assortis/core/ProjectManager.java:136: package org.jvnet.substance does not exist
[javac] org.jvnet.substance.SubstanceLookAndFeel.setFontPolicy(org.jvnet.substance.fonts.SubstanceFontUtilities.getScaledFontPolicy(1.25f));
[javac] ^
[javac] Note: /Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/Assortis/src/assortis/core/ProjectManager.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 2 errors
BUILD FAILED
/Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/build.xml:9: The following error occurred while executing this line:
/Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/Assortis/nbproject/build-impl.xml:375: The following error occurred while executing this line:
/Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/Assortis/nbproject/build-impl.xml:172: Compile failed; see the compiler error output for details.
After commenting out the troublesome code, one gets dependencies from netbeans:
/Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/build.xml:9: The following error occurred while executing this line:
/Users/hansi/Downloads/archive/openjfx-compiler-tp1/dist/demos/BasicDND/nbproject/build-impl.xml:428: taskdef class org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs cannot be found
Posted by: hansi | July 02, 2008 at 12:23 PM
Coffeejolts wrote: Jim, Will the jmc.dll be included with the SDK Preview? I am dying to try it out in an app that I'm working on.
Yes, I believe that the plan is to provide the jmc.dll with the Technology Preview Release.
Posted by: Jim Weaver | July 02, 2008 at 11:41 AM
Jim, Will the jmc.dll be included with the SDK Preview? I am dying to try it out in an app that I'm working on.
Posted by: coffeejolts | July 02, 2008 at 11:35 AM