Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

***StillClock.java***** import java.awt.*; import javax.swing.*; import java.uti

ID: 660954 • Letter: #

Question

***StillClock.java*****

import java.awt.*;

import javax.swing.*;

import java.util.*;

public class StillClock   extends JPanel {

private int hour;

private int minute;

private int second;

  

/** Construct a default clock with the current time*/

public StillClock() {

setCurrentTime();

}

  

/** Construct a clock with specified hour, minute, and second */

public StillClock(int hour, int minute, int second) {

this.hour = hour;

this.minute = minute;

this.second = second;

}

  

/** Return hour */

public int getHour() {

return hour;

}

  

/** Set a new hour */

public void setHour(int hour) {

this.hour = hour;

repaint();

}

  

/** Return minute */

public int getMinute() {

return minute;

}

  

/** Set a new minute */

public void setMinute(int minute) {

this.minute = minute;

repaint();

}

  

/** Return second */

public int getSecond() {

return second;

}

  

/** Set a new second */

public void setSecond(int second) {

this.second = second;

repaint();

}

  

@Override /** Draw the clock */

protected void paintComponent(Graphics g) {

super.paintComponent(g);

  

// Initialize clock parameters

int clockRadius =

(int)(Math.min(getWidth(), getHeight()) * 0.8 * 0.5);

int xCenter = getWidth() / 2;

int yCenter = getHeight() / 2;

  

// Draw circle

g.setColor(Color.black);

g.drawOval(xCenter - clockRadius, yCenter - clockRadius,

   2 * clockRadius, 2 * clockRadius);

g.drawString("12", xCenter - 5, yCenter - clockRadius + 12);

g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);

g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);

g.drawString("6", xCenter - 3, yCenter + clockRadius - 3);

  

// Draw second hand

int sLength = (int)(clockRadius * 0.8);

int xSecond = (int)(xCenter + sLength *

Math.sin(second * (2 * Math.PI / 60)));

int ySecond = (int)(yCenter - sLength *

Math.cos(second * (2 * Math.PI / 60)));

g.setColor(Color.red);

g.drawLine(xCenter, yCenter, xSecond, ySecond);

  

// Draw minute hand

int mLength = (int)(clockRadius * 0.65);

int xMinute = (int)(xCenter + mLength *

Math.sin(minute * (2 * Math.PI / 60)));

int yMinute = (int)(yCenter - mLength *

Math.cos(minute * (2 * Math.PI / 60)));

g.setColor(Color.blue);

g.drawLine(xCenter, yCenter, xMinute, yMinute);

  

// Draw hour hand

int hLength = (int)(clockRadius * 0.5);

int xHour = (int)(xCenter + hLength *

Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));

int yHour = (int)(yCenter - hLength *

Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));

g.setColor(Color.green);

g.drawLine(xCenter, yCenter, xHour, yHour);

}

  

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);

}

  

@Override

public Dimension getPreferredSize() {

return new Dimension(200, 200);

}

}

***StillClock.java*****

*****DrawArcs.java*****

import javax.swing.JFrame;

import javax.swing.JPanel;

import java.awt.Graphics;

public class DrawArcs extends JFrame {

public DrawArcs() {

setTitle("DrawArcs");

add(new ArcsPanel());

}

/** Main method */

public static void main(String[] args) {

DrawArcs frame = new DrawArcs();

frame.setLocationRelativeTo(null); // Center the frame

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(250, 300);

frame.setVisible(true);

}

}

// The class for drawing arcs on a panel

class ArcsPanel extends JPanel {

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

int xCenter = getWidth() / 2;

int yCenter = getHeight() / 2;

int radius = (int)(Math.min(getWidth(), getHeight()) * 0.4);

int x = xCenter - radius;

int y = yCenter - radius;

g.fillArc(x, y, 2 * radius, 2 * radius, 0, 30);

g.fillArc(x, y, 2 * radius, 2 * radius, 90, 30);

g.fillArc(x, y, 2 * radius, 2 * radius, 180, 30);

g.fillArc(x, y, 2 * radius, 2 * radius, 270, 30);

}

}

Hello... You are given two separate JPanels, DrawArcs.java(Fan) and StillClock.java(clock) Use your own thread to give them a life, that means make the clock to work in realtime, and Fan To start. Use your own GUI to start and stop as you wish.

Explanation / Answer

public class FanTest {

public static void main(String args[]) {

Fan fan = new Fan();
fan.seton$off(true);
fan.setcolor("yellow");
fan.setspeed(3);


FanTest ft = new FanTest();
System.out.println(ft.toString());

}

public String toString(){

Fan fan = new Fan();
String printme = null;

if(fan.on$off == true){
printme = ("Speed: " + fan.getspeed() + " Color: " + fan.color + " Radius: " + fan.radius);
}
if(fan.on$off == false){
printme = ("Color: " + fan.color + " Radius: " + fan.radius + " Fan is off!!");
}

return(printme);

}
}

class Fan1 {
private int speed = 1;
private boolean on$off = false;
private double radius = 5;
private String color = "Blue";

    public static final int SLOW = 1;
    public static final int MEDIUM = 2;
   public static final int FAST = 3;


Fan1() {
this.speed = speed;
this.on$off = on$off;
this.radius = radius;
this.color = color;
}

void setspeed(int s) {
speed = s;
}

void seton$off(boolean open) {
on$off = open;
}

void setradius(double r) {
radius = r;
}

void setcolor(String c) {
color = c;
}

int getspeed() {
return speed;
}

boolean ison$off() {
return on$off;
}

double getradius() {
return radius;
}

String getcolor() {
return color;
}

class Fan2 {
int speed = 1;
boolean on$off = false;
double radius = 5;
String color = "Blue";

Fan2() {
this.speed = speed;
this.on$off = on$off;
this.radius = radius;
this.color = color;
}

void setspeed(int s) {
speed = s;
}

void seton$off(boolean open) {
on$off = open;
}

void setradius(double r) {
radius = r;
}

void setcolor(String c) {
color = c;
}

int getspeed() {
return speed;
}

boolean ison$off() {
return on$off;
}

double getradius() {
return radius;
}

String getcolor() {
return color;
}

}
}