我正在尝试使用 fillOval 命令在 Java 中创建一个圆。用户输入圆的中心坐标和半径,但我不知道如何找到它们 fillOval 命令的高度和宽度。
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)
这就是我到目前为止所拥有的一切。我只是不确定如何获得高度和宽度。
也许这个简单的小方法会对你有所帮助......
/**
* 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();
}
将 drawOval() 替换为 fillOval()。