0% found this document useful (0 votes)
95 views14 pages

Final Test Reveiw - Java Programming Exercises

This document contains 5 programming exercises related to JavaFX. The first exercise demonstrates how to create a GUI with buttons that enlarge and shrink a circle. The second exercise shows how to create buttons that move text left and right. The third exercise adds checkboxes to change the font style of text. The fourth exercise demonstrates how to handle button click events. The fifth exercise is incomplete but begins to demonstrate handling key press events.

Uploaded by

Gursehaj Harika
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
95 views14 pages

Final Test Reveiw - Java Programming Exercises

This document contains 5 programming exercises related to JavaFX. The first exercise demonstrates how to create a GUI with buttons that enlarge and shrink a circle. The second exercise shows how to create buttons that move text left and right. The third exercise adds checkboxes to change the font style of text. The fourth exercise demonstrates how to handle button click events. The fifth exercise is incomplete but begins to demonstrate handling key press events.

Uploaded by

Gursehaj Harika
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 14

Final Test Review: Programming Exercises


Exercise 1.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class ControlCircle extends Application {


private CirclePane circlePane = new CirclePane();

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


public void start(Stage primaryStage) {
// Hold two buttons in an HBox
HBox hBox = new HBox();
hBox.setSpacing(10);
hBox.setAlignment(Pos.CENTER);
Button btEnlarge = new Button("Enlarge");
Button btShrink = new Button("Shrink");
hBox.getChildren().add(btEnlarge);
hBox.getChildren().add(btShrink);


 

 

// Create and register the handler


btEnlarge.setOnAction(new EnlargeHandler());

BorderPane borderPane = new BorderPane();


borderPane.setCenter(circlePane);
borderPane.setBottom(hBox);
BorderPane.setAlignment(hBox, Pos.CENTER);

// Create a scene and place it in the stage


Scene scene = new Scene(borderPane, 200, 150);
primaryStage.setTitle("ControlCircle"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

class EnlargeHandler implements EventHandler<ActionEvent> {


@Override // Override the handle method
public void handle(ActionEvent e) {
circlePane.enlarge();
}
}

/**
* 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 CirclePane extends StackPane {


private Circle circle = new Circle(50);

public CirclePane() {
getChildren().add(circle);
circle.setStroke(Color.BLACK);
circle.setFill(Color.WHITE);
}

public void enlarge() {


circle.setRadius(circle.getRadius() + 2);
}

public void shrink() {


circle.setRadius(circle.getRadius() > 2 ?
circle.getRadius() - 2 : circle.getRadius());
}
}

Exercise 2.
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;


 

 

import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;

public class ButtonDemo extends Application {


protected Text text = new Text(50, 50, "JavaFX Programming");

protected BorderPane getPane() {


HBox paneForButtons = new HBox(20);
Button btLeft = new Button("Left",
new ImageView("image/left.gif"));
Button btRight = new Button("Right",
new ImageView("image/right.gif"));
paneForButtons.getChildren().addAll(btLeft, btRight);
paneForButtons.setAlignment(Pos.CENTER);
paneForButtons.setStyle("-fx-border-color: green");

BorderPane pane = new BorderPane();


pane.setBottom(paneForButtons);

Pane paneForText = new Pane();


paneForText.getChildren().add(text);
pane.setCenter(paneForText);

btLeft.setOnAction(e -> text.setX(text.getX() - 10));


btRight.setOnAction(e -> text.setX(text.getX() + 10));


 

 

return pane;
}

@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(getPane(), 450, 200);
primaryStage.setTitle("ButtonDemo"); // 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);
}
}

Exercise 3.
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;


 

 

import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;

public class CheckBoxDemo extends ButtonDemo {


@Override // Override the getPane() method in the super class
protected BorderPane getPane() {
BorderPane pane = super.getPane();

Font fontBoldItalic = Font.font("Times New Roman",


FontWeight.BOLD, FontPosture.ITALIC, 20);
Font fontBold = Font.font("Times New Roman",
FontWeight.BOLD, FontPosture.REGULAR, 20);
Font fontItalic = Font.font("Times New Roman",
FontWeight.NORMAL, FontPosture.ITALIC, 20);
Font fontNormal = Font.font("Times New Roman",
FontWeight.NORMAL, FontPosture.REGULAR, 20);

text.setFont(fontNormal);

VBox paneForCheckBoxes = new VBox(20);


paneForCheckBoxes.setPadding(new Insets(5, 5, 5, 5));
paneForCheckBoxes.setStyle("-fx-border-color: green");
CheckBox chkBold = new CheckBox("Bold");
CheckBox chkItalic = new CheckBox("Italic");
paneForCheckBoxes.getChildren().addAll(chkBold, chkItalic);
pane.setRight(paneForCheckBoxes);


 

 

EventHandler<ActionEvent> handler = e -> {


if (chkBold.isSelected() && chkItalic.isSelected()) {
text.setFont(fontBoldItalic); // Both check boxes checked
}
else if (chkBold.isSelected()) {
text.setFont(fontBold); // The Bold check box checked
}
else if (chkItalic.isSelected()) {
text.setFont(fontItalic); // The Italic check box checked
}
else {
text.setFont(fontNormal); // Both check boxes unchecked
}
};

chkBold.setOnAction(handler);
chkItalic.setOnAction(handler);

return pane; // Return a new pane


}

/**
* 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);
}


 

 

Exercise 4.
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");
}
}


 
10 
 

Exercise 5.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class KeyEventDemo extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// Create a pane and set its properties
Pane pane = new Pane();
Text text = new Text(20, 20, "A");

pane.getChildren().add(text);
text.setOnKeyPressed(e -> {
switch (e.getCode()) {
case DOWN: text.setY(text.getY() + 10); break;
case UP: text.setY(text.getY() - 10); break;
case LEFT: text.setX(text.getX() - 10); break;
case RIGHT: text.setX(text.getX() + 10); break;
default:
if (e.getText().length() > 0)
text.setText(e.getText());
}
});

// Create a scene and place the pane in the stage

10 
 
11 
 

Scene scene = new Scene(pane);


primaryStage.setTitle("KeyEventDemo"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage

text.requestFocus(); // text is focused to receive key input


}

/**
* 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);
}
}

Exercise 6.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class MouseEventDemo extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// Create a pane and set its properties
Pane pane = new Pane();

11 
 
12 
 

Text text = new Text(20, 20, "Programming is fun");


pane.getChildren().addAll(text);
text.setOnMouseDragged(e -> {
text.setX(e.getX());
text.setY(e.getY());
});

// Create a scene and place it in the stage


Scene scene = new Scene(pane, 300, 100);
primaryStage.setTitle("MouseEventDemo"); // 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);
}
}

Exercise 7
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;

12 
 
13 
 

import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;

public class ScrollBarDemo extends Application {


@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
Text text = new Text(20, 20, "JavaFX Programming");

ScrollBar sbHorizontal = new ScrollBar();


ScrollBar sbVertical = new ScrollBar();
sbVertical.setOrientation(Orientation.VERTICAL);

// Create a text in a pane


Pane paneForText = new Pane();
paneForText.getChildren().add(text);

// Create a border pane to hold text and scroll bars


BorderPane pane = new BorderPane();
pane.setCenter(paneForText);
pane.setBottom(sbHorizontal);
pane.setRight(sbVertical);

// Listener for horizontal scroll bar value change


sbHorizontal.valueProperty().addListener(ov ->
text.setX(sbHorizontal.getValue() * paneForText.getWidth() /
sbHorizontal.getMax()));

13 
 
14 
 

// Listener for vertical scroll bar value change


sbVertical.valueProperty().addListener(ov ->
text.setY(sbVertical.getValue() * paneForText.getHeight() /
sbVertical.getMax()));

// Create a scene and place it in the stage


Scene scene = new Scene(pane, 450, 170);
primaryStage.setTitle("ScrollBarDemo"); // 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);
}
}

Please see the Chapters: Event-Driven Programming and Animation, JavaFX UI


for above programming requirement and details

14 
 

You might also like