Exercise14 27 Exercise14 28 Exercise14 29 12 10 6 224437 91

Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a clock with random hour and minute values. (c) Exercise 14.29 displays a bean machine.

Solution

Please find below a single JAVA program to display all three images at the same time:

import java.util.Calendar;
import java.util.GregorianCalendar;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.text.Text;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.geometry.Insets;
import javafx.scene.shape.Polyline;
import javafx.collections.ObservableList;


public class ClockPane extends Pane {
   private int hour;
   private int minute;
   private int second;
   private boolean hourHandVisible;
   private boolean minuteHandVisible;
   private boolean secondHandVisible;

   // Clock pane\'s width and height
   private double w = 250, h = 250;

   /** Construct a default clock with the current time */
   public ClockPane() {
       setCurrentTime();
   }

   /** Construct a click with specified hour, minute, and second */
   public ClockPane(int hour, int minute, int second) {
       this.hour = hour;
       this.minute = minute;
       this.second = second;
       hourHandVisible = minuteHandVisible =
       secondHandVisible = true;
       paintClock();
   }

   /** Return hour */
   public int getHour() {
       return hour;
   }

   /** Set a new hour */
   public void setHour(int hour) {
       this.hour = hour;
       paintClock();
   }

   /** Return minute */
   public int getMinute() {
       return minute;
   }

   /** Set a new minute */
   public void setMinute(int minute) {
       this.minute = minute;
       paintClock();
   }

   /** Return second */
   public int getSecond() {
       return second;
   }

   /** Set a new second */
   public void setSecond(int second) {
       this.second = second;
       paintClock();
   }

   /** Return clock pane\'s width */
   public double getW() {
       return w;
   }

   /** Set clock pane\'s width */
   public void getW(double w) {
       this.w = w;
       paintClock();
   }

   /** Return clock pane\'s height */
   public double getH() {
       return h;
   }

   /** Set clock pane\'s heigt */
   public void setH(double h) {
       this.h = h;
       paintClock();
   }

   /** Return hourHandVisible */
   public boolean isHourHandVisible() {
       return hourHandVisible;
   }

   /** set hourHandVisible */
   public void setHourHandVisible(boolean hourHandVisible) {
       this.hourHandVisible = hourHandVisible;
       paintClock(); // Repaint the clock
   }

   /** Return minuteHandVisible */
   public boolean isMinuteHandVisible() {
       return minuteHandVisible;
   }

   /** set minuteHandVisible */
   public void setMinuteHandVisible(boolean minuteHandVisible) {
       this.minuteHandVisible = minuteHandVisible;
       paintClock(); // Repaint the clock
   }

   /** Return secondHandVisible */
   public boolean isSecondHandVisible() {
       return secondHandVisible;
   }

   /** set secondHandVisible */
   public void setSecondHandVisible(boolean secondHandVisible) {
       this.secondHandVisible = secondHandVisible;
       paintClock(); // Repaint the clock
   }

   /* Set the current time for the clock */
   public void setCurrentTime() {
       // Construct a Calendar for the current date and time
       Calendar calendar = new GregorianCalendar();

       // Set current hour, minute and second
       this.hour = calendar.get(Calendar.HOUR_OF_DAY);
       this.minute = calendar.get(Calendar.MINUTE);
       this.second = calendar.get(Calendar.SECOND);

       paintClock(); // Repaint the clock
   }
  
   /** Paint the clock */
   protected void paintClock() {
       // Initialize clock parameters
       double clockRadius = Math.min(w, h) * 0.8 * 0.5;
       double centerX = w / 2;
       double centerY = h / 2;

       // Draw circle
       Circle circle = new Circle(centerX, centerY, clockRadius);
       circle.setFill(Color.WHITE);
       circle.setStroke(Color.BLACK);
       Text t1 = new Text(centerX - 5, centerY - clockRadius + 12, \"12\");
       Text t2 = new Text(centerX - clockRadius + 3, centerY + 5, \"9\");
       Text t3 = new Text(centerX + clockRadius - 10, centerY + 3, \"3\");
       Text t4 = new Text(centerX - 3, centerY + clockRadius - 3, \"6\");

       // Draw second hand
       double sLength = clockRadius * 0.8;
       double secondX = centerX + sLength *
           Math.sin(second * (2 * Math.PI / 60));
       double secondY = centerY - sLength *
           Math.cos(second * (2 * Math.PI / 60));
       Line sLine = new Line(centerX, centerY, secondX, secondY);
       sLine.setStroke(Color.RED);

       // Draw minute hand
       double mLength = clockRadius * 0.65;
       double xMinute = centerX + mLength *
           Math.sin(minute * (2 * Math.PI / 60));
       double minuteY = centerY - mLength *
           Math.cos(minute * (2 * Math.PI / 60));
       Line mLine = new Line(centerX, centerY, xMinute, minuteY);
       mLine.setStroke(Color.BLUE);

       // Draw hour hand
       double hLength = clockRadius * 0.5;
       double hourX = centerX + hLength *
           Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));
       double hourY = centerY - hLength *
           Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));
       Line hLine = new Line(centerX, centerY, hourX, hourY);
       hLine.setStroke(Color.GREEN);

       getChildren().clear();
       getChildren().addAll(circle, t1, t2, t3, t4);
       if (secondHandVisible)
           getChildren().add(sLine);
       if (minuteHandVisible)
           getChildren().add(mLine);
       if (hourHandVisible)
           getChildren().add(hLine);
   }
}

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

       // Create three polylines and set their properties
       Polyline polyline1 = new Polyline();
       pane.getChildren().add(polyline1);
       polyline1.setStroke(Color.BLACK);
       ObservableList<Double> list = polyline1.getPoints();
       double x1 = 40.0;
       double y1 = 190.0;
       double y2 = 20.0;
       double x3 = 125.0;
       list.addAll(x1, y1, x1, y2, x3, y2, x3, y1 * .60);

       Polyline polyline2 = new Polyline();
       pane.getChildren().add(polyline2);
       polyline2.setStroke(Color.BLACK);
       ObservableList<Double> list2 = polyline2.getPoints();
       list2.addAll((x1 + x3) * .5, y1 * .5, x3, y1 * .25,
           x3 + (x3 - x1) * .5, y1 * .5);

       Polyline polyline3 = new Polyline();
       pane.getChildren().add(polyline3);
       polyline3.setStroke(Color.BLACK);
       ObservableList<Double> list3 = polyline3.getPoints();
       list3.addAll((x1 + x3) * .6, y1 * .80, x3, y1 * .60,
           x3 + (x3 - x1) * .3, y1 * .80);

       // Create a circle and set its properties
       Circle circle = new Circle(x3, y1 * .25, 15);
       circle.setFill(Color.WHITE);
       circle.setStroke(Color.BLACK);
       pane.getChildren().add(circle);

       // Create an arc and set its properties
       Arc arc = new Arc(x1, y1 + 1, 25, 15, 0, 180);
       arc.setFill(Color.WHITE);
       arc.setStroke(Color.BLACK);
       pane.getChildren().add(arc);

       // Create a scene and place it in the stage
       Scene scene = new Scene(pane, 200, 200);
       primaryStage.setTitle(\"Exercise_14_17\"); // Set the stage title
       primaryStage.setScene(scene); // Place the scene in the stage
       primaryStage.show(); // Display the stage
   }
}


public class Exercise_14_09 extends Application {
   @Override // Override the start method in the Application class
   public void start(Stage primaryStage) {
       // Create a GridPane and set its properties
       GridPane gridPane = new GridPane();
       gridPane.setPadding(new Insets(10, 10, 10, 10));
       gridPane.setHgap(10);
       gridPane.setVgap(10);

       // Place nodes in the pane
       for (int i = 0; i < 2; i++) {
           for (int j = 0; j < 2; j++) {
               // Create a stack pane
               StackPane stackPane = new StackPane();

               // Add circle to stack pane
               Circle circle = getCircle();
               stackPane.getChildren().add(circle);

               // Add Arcs to stack pane
               getArcs(stackPane);

               gridPane.add(stackPane, i, j);
           }
       }

       // Create a scene and place in in the stage
       Scene scene = new Scene(gridPane);
       primaryStage.setTitle(\"Exercise_14_09\"); // Set the stage title
       primaryStage.setScene(scene); // Place the scene in the stage
       primaryStage.show(); // Display the stage
   }

   /** Add four arcs to a pane and place them in a stack pane */
   private void getArcs(StackPane stackPane) {
       double angle = 30; // Start angle
       for (int i = 0; i < 4; i++) {
           Pane pane = new Pane();
           Arc arc = new Arc(100, 100, 80, 80, angle + 90, 35);
           arc.setFill(Color.BLACK);
           arc.setType(ArcType.ROUND);
           pane.getChildren().add(arc);
           stackPane.getChildren().add(pane);
           angle += 90;
       }
   }

   /** Return a Circle */
   private Circle getCircle() {
       Circle c = new Circle();
       c.setRadius(100);
       c.setStroke(Color.BLACK);
       c.setFill(Color.WHITE);
       return c;
   }
}

 Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a cl
 Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a cl
 Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a cl
 Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a cl
 Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a cl
 Exercise14 27 × Exercise14 28 Exercise14 29 12 10 6 22:44:37 9:10:0 FIGURE 14.52 (a) Exercise 14.27 displays a detailed clock. (b) Exercise 14.28 displays a cl

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site