Its long time since I blogged and lot of things happened during that time – Release of JavaFX 1.2, Java Store, New Samples… and lot more to write about!
Let me start with UI Controls…
Following are some of the UI controls -
Button, CheckBox, Hyperlink, Label, ListView, ProgressBar, ProgressIndicator, RadioButton, ScrollBar, Slider, TextBox, ToggleButton
For Applet mode, click on above image
For standalone mode
The article on Node-Based Controls demonstrates its usage. So let me focus on how to update the skin of these controls.
The skin attribute of Control class allows you to associate a Skin. The Skin is responsible for implementing the user interface using on scene-graph nodes and defining the behavior of the control. The Behavior has the logic for handling key and mouse events.
Sounds complicated? confused? Control, Skin, Behavior.. For now lets look at a simple and straight forward way to just change the color and some basic attributes of Skin.
JavaFX already has a default skin implementation – Caspian. Its in com.sun.javafx.scene.control.caspian package. For each control, there is corresponding skin implementation. We can change few attributes of these skin implementations and customize the look of controls.
Example: To update skin of Button, we can customize the attributes of ButtonSkin implementation.
var button = Button {
text: "Button"
skin: ButtonSkin {
borderFill: Color.BLACK
focusFill: Color.BLUE
highlightFill: Color.GREEN
shadowFill: Color.GRAY
textFill: Color.RED
fill: Color.WHITE
}
}
|
Similarly a TextBox can be customized as shown below:
var textBox = TextBox {
text: "TextBox"
skin: TextBoxSkin {
backgroundFill: Color.YELLOW
borderFill: Color.BLACK
caretFill: Color.BLUE
focusFill: Color.BEIGE
highlightFill: Color.BLUE
promptTextFill: Color.GRAY
selectedTextFill: Color.WHITE
shadowFill: Color.DARKGRAY
textFill: Color.BLACK
}
}
|
Please note, all those attributes are instance of Paint, so we can assign instance of Color, LinearGradient or RadialGradient.
More attributes and implementation is available in the source.
Try it out and let me know feedback!
Source:
var dzone_url = “http://blogs.sun.com/rakeshmenonp/entry/javafx_skinnable_controls”;
var dzone_style = ’2′;
digg_skin = ‘compact’;
digg_window = ‘new’;