0% found this document useful (0 votes)
203 views20 pages

11 Css PDF

Here is some sample code to create a simple GUI with a die and button to roll it using JavaFX controls: ```java import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class DieRoller extends Application { private int sides = 6; private int value = 1; @Override public void start(Stage primaryStage) { // Create label to display die value Label

Uploaded by

Alee Aarif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
203 views20 pages

11 Css PDF

Here is some sample code to create a simple GUI with a die and button to roll it using JavaFX controls: ```java import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class DieRoller extends Application { private int sides = 6; private int value = 1; @Override public void start(Stage primaryStage) { // Create label to display die value Label

Uploaded by

Alee Aarif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

JavaFX: CSS

9-18-2013
 JavaFX
 Cascading Style Sheets (CSS)
 Scene Graphs & Nodes
 Convenience Methods for Event Handling
 UI Controls

HW#2 posted; due 9/23/2013


Reading Assignment:
 Fancy Forms with JavaFX CSS
 Styling an FX Button with CSS
 Working with JavaFX Scene Graphs
 Using JavaFX UI Controls
 Cascading style sheets (CSS) separate content
from presentation, so the presentation style can
be changed easily without modifying the code
 A style sheet is a set of rules that control how to
display elements
 each rule has a selector that matches an
element and a set of properties with values
that define the settings for the selected
element; for example property: fontsize
.label {
-fx-font-size: 12px; value: 12 pixels
applies to Label
-fx-font-weight: bold;
}
// without .css
Text scenetitle = new Text(“Welcome”);
scenetitle.setFont(Font.font(“Tahoma”,
FontWeight.NORMAL, 20));
Label userName = new Label(“User Name:”);
TextField userTextfield = new TextField();
Label pw = new Label(“Password:”);
PasswordField pwBox = new PasswordField();
Button btn = new Button(“Sign in”);
final Text actiontarget = new Text();
// event handler performed
actiontarget.setFill(Color.FIREBRICK);
actiontarget.setText(“Sign in button pressed”);
 Create the CSS file, e.g. Login.css, in the same
directory as the source file
 Initialize the stylesheets variable, e.g.
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
scene.getStylesheets().add
(Login.class.getResource("Login.css").toExternalForm());

primaryStage.show();
 JavaFX will look in the src/login directory for the style
sheet (note that the class name in this example is
Login)
 Add the following to the .css file:

.root { -fx-background-image: url("background.jpg"); }

 This applies the background image to the root node of


the Scene instance
 The name of the property is –fx-background-image
 The value for this property is url(“background.jpg”)
 The image url is relative to the directory containing the
.css file
cf. JavaFX CSS Reference Guide
styles are first applied to the parent then the
children
each node in the scene graph has a styleClass
variable and an id variable
e.g. style a label
.label {
-fx-font-size: 12px;
-fx-font-weight: bold;
-fx-text-fill: #333333;
-fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5),0,0,0,1 );
}
 There were 2 text variables in the example:
#welcome-text { Text scenetitle = new Text(“Welcome”);
-fx-font-size: 32px; scenetitle.setId(“welcome-text”);
-fx-font-family: "Arial Black";
-fx-fill: #818181;
-fx-effect: innershadow(three-pass-box , rgba(0,0,0,0.7),6,0.0,0,2);
}
#actiontarget { final Text actiontarget = new Text();
-fx-fill: FIREBRICK; actiontarget.setId(“actiontarget”);
-fx-font-weight: bold;
-fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
}
cf. Styling an FX Button with CSS
.button {
-fx-text-fill: white;
-fx-font-family: "Arial Narrow";
-fx-font-weight: bold;
-fx-background-color: linear-gradient(#61a2b1, #2A5058);
-fx-effect:dropshadow(three-pass-box ,rgba(0,0,0,0.6),5,0.0,0,1);
}
.button:hover {
-fx-background-color: linear-gradient(#2A5058, #61a2b1);
}
// with .css
Text scenetitle = new Text(“Welcome”);
scenetitle.setId(“welcome-text”);
Label userName = new Label(“User Name:”);
TextField userTextfield = new TextField();
Label pw = new Label(“Password:”);
PasswordField pwBox = new PasswordField();
Button btn = new Button(“Sign in”);
final Text actiontarget = new Text();
actiontarget.setId(“actiontarget”);
// event handler performs
actiontarget.setText(“Sign in button pressed”);
 cf. Working with JavaFX Scene Graphs

 javafx.scene: Group, Region, Node, Scene


 javafx.scene.shape: Circle, Rectangle, Line…
 javafx.scene.paint: Color
 javafx.scene.Node
 leaf nodes: Rectangle, Text, ImageView, etc.
 branch nodes (of type Parent): Group,Region,Control
 javafx.scene.Group (extends Parent)
 node that contains a list of children that are rendered
in order
 javafx.scene.layout.Region (extends Parent)
 area of the screen that can contain other nodes and
styled with CSS
 javafx.scene.Control (extends Parent)
 user interface controls (e.g. MenuBar, ScrollPane,
ChoiceBox, Slider, etc.)
 The javafx.scene package includes (plus others)
 Node: abstract base class for all scene graph nodes.
 Parent: abstract base class for all branch nodes.
(This class directly extends Node).
 Scene: base container class for all content in the
scene graph.
 These base classes define important functionality
including paint order, visibility, composition of
transformations, support for CSS styling, and so
on.
public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 500, 500, Color.BLACK);
// upper right (25,25); lower left (250,250)
Rectangle r = new Rectangle(25,25,250,250);
r.setFill(Color.BLUE);
root.getChildren().add(r);
stage.setTitle("JavaFX Scene Graph Demo");
stage.setScene(scene);
stage.show();
}
Property Description
Event type Type of event that occurred
Source Origin of the event.
Target Node on which the action occurred

 Event type: InputEvent (KeyEvent,


MouseEvent,…), ActionEvent, WindowEvent
 Target: an instance of any class that
implements the EventTarget interface
 Window, Scene and Node classes implement the
EventTarget interface and all subclasses of them
inherit the implementation
 Key events: target is the node that has
focus
 Mouse events: node at the location of the
cursor
 Continuous gesture events: node at the
center point of all touches at the beginning
of the gesture
 Swipe events: node at the center of the
entire path of all the fingers
 Touch events: node at the location pressed
suppose the user
clicks on the
triangle

the resulting event dispatch chain


are the gray nodes
 easy way to create and register event handlers to
respond to mouse events, keyboard events,
action events, drag-and-drop events, window
events, etc.
 general form:
setOnEvent-type(EventHandler<? super event-class> value)
// example: handle a button event
btn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
actiontarget.setText(“Sign in button pressed”);
}
});
 cf. Using JavaFX UI Controls

 javaFX.scene.control package
 Design a GUI that displays the following:
 top face of a six-sided Die
 Button that, when clicked, rolls the Die

 Then add the ability for the user to input


the number of sides desired (could use
JOptionPane for this)

You might also like