Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
11 views

LabChapter 4 GUI With Java FX

The documents describe several JavaFX graphics programs that create and manipulate graphical shapes, images, and text. The programs demonstrate basic graphics and user interface concepts in JavaFX including creating buttons, circles, images, and using different types of layouts and containers.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

LabChapter 4 GUI With Java FX

The documents describe several JavaFX graphics programs that create and manipulate graphical shapes, images, and text. The programs demonstrate basic graphics and user interface concepts in JavaFX including creating buttons, circles, images, and using different types of layouts and containers.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

package graphics;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ButtonInPane extends Application


{
@Override // Override the start method in the Application class
public void start(Stage primaryStage)
{
// Create a scene and place a button in the scene
StackPane pane = new StackPane();
pane.getChildren().add(new Button("OK"));

Scene scene = new Scene(pane, 200, 50);

primaryStage.setTitle("Button in a pane"); // Set the stage title


primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage

}
/**
* The main method is only needed for the IDE with limited
* JavaFX support.Not needed for running from the command line.
* @param args
*/
public static void main(String[] args)
{
launch(args);
}

}
package graphics;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.FontPosture;
import javafx.scene.control.Button;
public class Hello extends Application

{
@Override
public void start(Stage pStage)
{

Text text1 = new Text(50,50,"Welcome to JavaFX");


text1.setFont(Font.font("Courier", FontWeight.BOLD,
FontPosture.ITALIC, 15));

Button btn1 = new Button("Display");


Pane pane = new Pane();
pane.getChildren().add(btn1);

Scene scene = new Scene(pane);


btn1.setOnAction((ActionEvent e)->

{
pane.getChildren().add(text1);
btn1.setVisible(false);
}
);
//
pStage.setTitle("Show Text");
pStage.setScene(scene);

pStage.show();
}
public static void main(String[] args)
{
launch(args);
}

}
package graphics;

import javafx.application.Application;

import javafx.scene.Scene;

import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class ShowCircle extends Application


{

/**
*
* @param primaryStage
*/
@Override
public void start(Stage primaryStage)
{
Circle circle = new Circle();
circle.setCenterX(100);
circle.setCenterY(100);
circle.setRadius(50);

circle.setStroke(Color.BLACK); // Set circle stroke color


circle.setFill(Color.AQUA);

//Create a pane to hold the circle


Pane pane = new Pane();
pane.getChildren().add(circle);

//Create a scene and place it in the stage


Scene scene = new Scene(pane, 200, 200);

primaryStage.setTitle("ShowCircle"); // Set the stage title


primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}
public static void main(String[] args)
{
launch(args);
}
}

package graphics;

/**
*
* @
*/
import javafx.application.Application;

import javafx.scene.Scene;

import javafx.scene.layout.Pane;

import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class ShowCircleCentered extends Application
{
@Override
public void start(Stage primaryStage)
{
Pane pane = new Pane();
Circle circle = new Circle();

circle.centerXProperty().bind(pane.widthProperty().divide(2));
circle.centerYProperty().bind(pane.heightProperty().divide(2));

circle.setRadius(50);
circle.setStroke(Color.BLACK);
circle.setFill(Color.AQUA);

pane.getChildren().add(circle); // Add circle to the pane

// Create a scene and place it in the stage


Scene scene = new Scene(pane, 200, 200);
primaryStage.setTitle("ShowCircleCentered"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}
public static void main(String[] args)
{
launch(args);

}
package graphics;

/**
*
* @
*/
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.scene.control.Button;
import javafx.scene.layout.*;
import javafx.geometry.Pos;
public class SmileyFace extends Application
{

/**
*

* @param stage
*/
@Override

public void start(Stage stage)


{
// create and configure the main circle for the face
Circle face = new Circle(125, 125, 80);
face.setFill(Color.YELLOW);
face.setStroke(Color.RED);

// create and configure the circle for the right eye


Circle rightEye = new Circle(86, 100, 10);
rightEye.setFill(Color.YELLOW);
rightEye.setStroke(Color.BLUE);

//create and configure the circle for the left eye


Circle leftEye = new Circle(162, 100, 10);
leftEye.setFill(Color.YELLOW);
leftEye.setStroke(Color.BLUE);

//create and configure a smiling mouth


Arc mouth = new Arc(125, 150, 45, 35, 0, -180);
mouth.setFill(Color.YELLOW);
mouth.setStroke(Color.BLUE);
mouth.setType(ArcType.OPEN);

//create and configure the text


Text caption = new Text(80, 240, "Smiley Face");
caption.setFill(Color.BLUE);
caption.setFont(Font.font("Verdana", 15));

//create a group that holds all the features


Group group = new Group(face, rightEye, leftEye, mouth, caption);

// create a button that will make the face smile


Button smileButton = new Button("Smile");
//create a button that will make the face frown
Button frownButton = new Button("Frown");

//create and configure a horizontal container to hold the buttons


HBox buttonBox = new HBox(10);
buttonBox.setAlignment(Pos.CENTER);
//add the buttons to the horizontal container
buttonBox.getChildren().addAll(smileButton, frownButton);

//create and configure a vertical container to hold the button box


and the face group
VBox root = new VBox(10);

root.setBackground(Background.EMPTY);
root.setAlignment(Pos.CENTER);

//add the button box and the face group to the vertical container
root.getChildren().addAll(buttonBox, group);

//create and configure a new scene


Scene scene = new Scene(root, 250, 275, Color.YELLOW);

// supply the code that is executed when the smile button is pressed
smileButton.setOnAction(e -> mouth.setLength(-180));
//supply the code that is executed when the frown button is pressed
frownButton.setOnAction(e -> mouth.setLength(180));

// add the scene to the stage, then set the title


stage.setScene(scene);

stage.setTitle("Smiley Face");

//show the stage


stage.show();

}
public static void main(String[] args)
{
launch(args);
}
}

package graphics;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.geometry.Insets;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class ShowImage extends Application

{
public void start(Stage primaryStage)
{

//Create a pane to hold the image views


Pane pane = new HBox(10);
pane.setPadding(new Insets(5, 5, 5, 5));
Image image = new Image("C:/Users/Er/Desktop/3.jpg");
pane.getChildren().add(new ImageView(image));

ImageView imageView2 = new ImageView(image);


imageView2.setFitHeight(100);
imageView2.setFitWidth(100);
pane.getChildren().add(imageView2);

ImageView imageView3 = new ImageView(image);


imageView3.setRotate(90);
pane.getChildren().add(imageView3);
// Create a scene and place it in the stage
Scene scene = new Scene(pane);
primaryStage.setTitle("ShowImage"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}
public static void main(String[] args)

{
launch(args);
}

}
package graphics;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.*;
import javafx.scene.control.*;
import javafx.stage.Stage;

public class FontDemo extends Application


{
public void start(Stage primaryStage) {
// Create a pane to hold the circle
Pane pane = new StackPane();

// Create a circle and set its properties


Circle circle = new Circle();
circle.setRadius(50);
circle.setStroke(Color.BLACK);
circle.setFill(new Color(0.5, 0.5, 0.5, 0.1));
pane.getChildren().add(circle); // Add circle to the pane

// Create a label and set its properties


Label label = new Label("JavaFX");
label.setFont(Font.font("Times New Roman",

FontWeight.BOLD, FontPosture.ITALIC, 20));


pane.getChildren().add(label);

// Create a scene and place it in the stage


Scene scene = new Scene(pane);
primaryStage.setTitle("FontDemo"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}
public static void main(String[] args)

{
launch(args);
}

}
package graphics;

import javafx.application.Application;
import javafx.geometry.Insets;

import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class ShowFlowPane extends Application
{
public void start(Stage primaryStage)
{
// Create a pane and set its properties
FlowPane pane = new FlowPane();
pane.setPadding(new Insets(11, 12, 13, 14));
pane.setHgap(5); // Set hGap to 5px
pane.setVgap(5);

// Place nodes in the pane


pane.getChildren().addAll(new Label("First Name:"),
new TextField(), new Label("MI:"));
TextField tfMi = new TextField();
tfMi.setPrefColumnCount(1);
pane.getChildren().addAll(tfMi, new Label("Last Name:"),
new TextField());

// Create a scene and place it in the stage


Scene scene = new Scene(pane, 200, 250);
primaryStage.setTitle("ShowFlowPane"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage

public static void main(String[] args)


{
launch(args);
}

}
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

public class ShowHBoxVBox extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// Create a border pane
BorderPane pane = new BorderPane();

// Place nodes in the pane


pane.setTop(getHBox());
pane.setLeft(getVBox());

// Create a scene and place it in the stage


Scene scene = new Scene(pane);
primaryStage.setTitle("ShowHBoxVBox"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

private HBox getHBox() {


HBox hBox = new HBox(15); // Create an HBox with 15px spacing
hBox.setPadding(new Insets(15, 15, 15, 15));
hBox.setStyle("-fx-background-color: gold");
hBox.getChildren().add(new Button("Computer Science"));
hBox.getChildren().add(new Button("Chemistry"));
ImageView imageView = new ImageView(new Image("image/us.gif"));
hBox.getChildren().add(imageView);
return hBox;
}

private VBox getVBox() {


VBox vBox = new VBox(15); // Create a VBox with 15px spacing
vBox.setPadding(new Insets(15, 5, 5, 5));
vBox.getChildren().add(new Label("Courses"));
Label[] courses = {new Label("CSCI 1301"), new Label("CSCI 1302"),
new Label("CSCI 2410"), new Label("CSCI 3720")};

for (Label course: courses) {


VBox.setMargin(course, new Insets(0, 0, 0, 15));
vBox.getChildren().add(course);
}

return vBox;
}

/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.Line;

public class ShowLine extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// Create a scene and place it in the stage
Scene scene = new Scene(new LinePane(), 200, 200);
primaryStage.setTitle("ShowLine"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}
}

class LinePane extends Pane {


public LinePane() {
Line line1 = new Line(10, 10, 10, 10);
line1.endXProperty().bind(widthProperty().subtract(10));
line1.endYProperty().bind(heightProperty().subtract(10));
line1.setStrokeWidth(5);
line1.setStroke(Color.GREEN);
getChildren().add(line1);

Line line2 = new Line(10, 10, 10, 10);


line2.startXProperty().bind(widthProperty().subtract(10));
line2.endYProperty().bind(heightProperty().subtract(10));
line2.setStrokeWidth(5);
line2.setStroke(Color.GREEN);
getChildren().add(line2);
}
}

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.Ellipse;

public class ShowEllipse extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// Create a scene and place it in the stage
Scene scene = new Scene(new MyEllipse(), 300, 200);
primaryStage.setTitle("ShowEllipse"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}

class MyEllipse extends Pane {


private void paint() {
getChildren().clear();
for (int i = 0; i < 16; i++) {
// Create an ellipse and add it to pane
Ellipse e1 = new Ellipse(getWidth() / 2, getHeight() / 2,
getWidth() / 2 - 50, getHeight() / 2 - 50);
e1.setStroke(Color.color(Math.random(), Math.random(),
Math.random()));
e1.setFill(Color.WHITE);
e1.setRotate(i * 180 / 16);
getChildren().add(e1);
}
}

@Override
public void setWidth(double width) {
super.setWidth(width);
paint();
}

@Override
public void setHeight(double height) {
super.setHeight(height);
paint();
}
}

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.text.Text;

public class ShowArc extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
Arc arc1 = new Arc(150, 100, 80, 80, 30, 35); // Create an arc
arc1.setFill(Color.RED); // Set fill color
arc1.setType(ArcType.ROUND); // Set arc type

Arc arc2 = new Arc(150, 100, 80, 80, 30 + 90, 35);


arc2.setFill(Color.WHITE);
arc2.setType(ArcType.OPEN);
arc2.setStroke(Color.BLACK);

Arc arc3 = new Arc(150, 100, 80, 80, 30 + 180, 35);


arc3.setFill(Color.WHITE);
arc3.setType(ArcType.CHORD);
arc3.setStroke(Color.BLACK);

Arc arc4 = new Arc(150, 100, 80, 80, 30 + 270, 35);


arc4.setFill(Color.GREEN);
arc4.setType(ArcType.CHORD);
arc4.setStroke(Color.BLACK);

// Create a group and add nodes to the group


Group group = new Group();
group.getChildren().addAll(new Text(210, 40, "arc1: round"),
arc1, new Text(20, 40, "arc2: open"), arc2,
new Text(20, 170, "arc3: chord"), arc3,
new Text(210, 170, "arc4: chord"), arc4);

// Create a scene and place it in the stage


Scene scene = new Scene(new BorderPane(group), 300, 200);
primaryStage.setTitle("ShowArc"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;

public class HandleEvent extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// Create a pane and set its properties
HBox pane = new HBox(10);
pane.setAlignment(Pos.CENTER);
Button btOK = new Button("OK");
Button btCancel = new Button("Cancel");
OKHandlerClass handler1 = new OKHandlerClass();
btOK.setOnAction(handler1);
CancelHandlerClass handler2 = new CancelHandlerClass();
btCancel.setOnAction(handler2);
pane.getChildren().addAll(btOK, btCancel);

// Create a scene and place it in the stage


Scene scene = new Scene(pane);
primaryStage.setTitle("HandleEvent"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}

class OKHandlerClass implements EventHandler<ActionEvent> {


@Override
public void handle(ActionEvent e) {
System.out.println("OK button clicked");
}
}

class CancelHandlerClass implements EventHandler<ActionEvent> {


@Override
public void handle(ActionEvent e) {
System.out.println("Cancel button clicked");
}
}

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.geometry.HPos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class LoanCalculator extends Application {


private TextField tfAnnualInterestRate = new TextField();
private TextField tfNumberOfYears = new TextField();
private TextField tfLoanAmount = new TextField();
private TextField tfMonthlyPayment = new TextField();
private TextField tfTotalPayment = new TextField();
private Button btCalculate = new Button("Calculate");

@Override // Override the start method in the Application class


public void start(Stage primaryStage) {
// Create UI
GridPane gridPane = new GridPane();
gridPane.setHgap(5);
gridPane.setVgap(5);
gridPane.add(new Label("Annual Interest Rate:"), 0, 0);
gridPane.add(tfAnnualInterestRate, 1, 0);
gridPane.add(new Label("Number of Years:"), 0, 1);
gridPane.add(tfNumberOfYears, 1, 1);
gridPane.add(new Label("Loan Amount:"), 0, 2);
gridPane.add(tfLoanAmount, 1, 2);
gridPane.add(new Label("Monthly Payment:"), 0, 3);
gridPane.add(tfMonthlyPayment, 1, 3);
gridPane.add(new Label("Total Payment:"), 0, 4);
gridPane.add(tfTotalPayment, 1, 4);
gridPane.add(btCalculate, 1, 5);

// Set properties for UI


gridPane.setAlignment(Pos.CENTER);
tfAnnualInterestRate.setAlignment(Pos.BOTTOM_RIGHT);
tfNumberOfYears.setAlignment(Pos.BOTTOM_RIGHT);
tfLoanAmount.setAlignment(Pos.BOTTOM_RIGHT);
tfMonthlyPayment.setAlignment(Pos.BOTTOM_RIGHT);
tfTotalPayment.setAlignment(Pos.BOTTOM_RIGHT);
tfMonthlyPayment.setEditable(false);
tfTotalPayment.setEditable(false);
GridPane.setHalignment(btCalculate, HPos.RIGHT);

// Process events
btCalculate.setOnAction(e -> calculateLoanPayment());

// Create a scene and place it in the stage


Scene scene = new Scene(gridPane, 400, 250);
primaryStage.setTitle("LoanCalculator"); // Set title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

private void calculateLoanPayment() {


// Get values from text fields
double interest =
Double.parseDouble(tfAnnualInterestRate.getText());
int year = Integer.parseInt(tfNumberOfYears.getText());
double loanAmount =
Double.parseDouble(tfLoanAmount.getText());

// Create a loan object. Loan defined in Listing 10.2


Loan loan = new Loan(interest, year, loanAmount);

// Display monthly payment and total payment


tfMonthlyPayment.setText(String.format("$%.2f",
loan.getMonthlyPayment()));
tfTotalPayment.setText(String.format("$%.2f",
loan.getTotalPayment()));
}

/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}

You might also like