0

I am trying to create a circle in Java using the fillOval command. The user inputs the center co-ordinates and the radius for the circle but I do not know how to find the height and width for they fillOval command.

import java.util.*;
import java.awt.*;

public class Circles {
  public static final Scanner Console = new Scanner(System.in);
  public static void main(String args[]) {

DrawingPanel panel = new DrawingPanel(400,300);
Graphics g = panel.getGraphics();

//print the beginning statement of the main method
System.out.println("");

//ask the user for the center and radius for the first circle
System.out.println("Enter the x-value for the center of the first circle:    ");
double x1 = Console.nextDouble();
System.out.println("Enter the y-value for the center of the first circle: ");
double y1 = Console.nextDouble();
System.out.println("Enter the radius for the first circle: ");
double rad1 = Console.nextDouble();

//calculate the height and width of the first circle


//ask the user for the center and radius for the second circle
System.out.println("Enter the x-value for the center of the second circle: ");
double x2 = Console.nextDouble();
System.out.println("Enter the y-value for the center of the second circle: ");
double y2 = Console.nextDouble();
System.out.println("Enter the radius for the second circle: ");
double rad2 = Console.nextDouble();

//calculate the height and width of the second circle


//ask the user for the center and radius for the third circle
System.out.println("Enter the x-value for the center of the third circle: ");
double x3 = Console.nextDouble();
System.out.println("Enter the y-value for the center of the third circle: ");
double y3 = Console.nextDouble();
System.out.println("Enter the radius for the third circle: ");
double rad3 = Console.nextDouble();

//calculate the height and width of the third circle


//use the fillOval method to draw each circle
//fillOval(int x, int y, int width, int height)

This is all I have so far. Im just not sure how to obtain the height and width.

Vessel
  • 1
  • 3
  • Well, the diameter of a circle is 2 times the radius, and the width and height of a circle would be equal to the diameter, right? – Andreas Mar 04 '16 at 00:58
  • Your right. I completely over looked that. I was obviously trying to make it harder than it actually was. Thank you!! – Vessel Mar 05 '16 at 03:42

1 Answers1

0

Perhaps this simple little method will help you out a bit....

/**
 * Draws a circle on any Swing Component based off of the center of the circle rather than the top left corner of
 * the rectangle that the circle resides in.<pre>
 * 
 * <b>Example Usage:</b>
 * 
 *      DrawCircle(jLabel1, Color.RED, jLabel1.getWidth()/2, jLabel1.getHeight()/2, 40, 2);
 * </pre>
 *
 * @param ctrl (Any Swing Object) The variable name of the JComponent to draw on.<br> 
 * @param color (Color) (Optional - default is the current graphics color if null is passed) The color of the line
 * which makes the circle.<br>
 * @param x (Integer) The X location (in pixels) of where the center of circle is to be located.<br>
 * @param y (Integer) The Y location (in pixels) of where the center of circle is to be located.<br>
 * @param radius (Integer) The Radius of the circle in pixels (not the diameter). Radius is: (diameter/2).<br>
 * @param thickness (Integer) The thickness of the circle line (in pixels).
 */
public static void drawMyCircle(JComponent ctrl, Color color, int x, int y, int radius, int thickness) {
    Graphics2D g2 = (Graphics2D) ctrl.getGraphics();
    int diameter = radius * 2;
    g2.setColor(color);
    g2.setStroke(new BasicStroke(thickness));
    //shift x and y by the radius of the circle in order to correctly center it
    g2.drawOval(x - radius, y - radius, diameter, diameter); 
    g2.dispose();
    ctrl.revalidate();
}

Replace drawOval() with fillOval().

DevilsHnd - 退職した
  • 8,739
  • 2
  • 19
  • 22