filloval可以绘制圆吗
时间: 2024-03-16 19:43:39 浏览: 17
是的,fillOval()方法可以绘制圆形。在绘制圆形时,只需要让椭圆的宽度和高度一致即可。例如:
```
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class MyPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(50,50,100,100); // 绘制圆形
}
}
```
以上代码演示了如何在JPanel组件上绘制一个红色的圆形,它的左上角位于(50, 50),直径为100。
相关问题
用Java绘制颜色随机的圆圈
下面是一个用Java绘制颜色随机的圆圈的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class RandomCircle extends JPanel {
private static final int CIRCLE_COUNT = 20;
private static final int MIN_RADIUS = 10;
private static final int MAX_RADIUS = 50;
private final Random random = new Random();
private Color getRandomColor() {
return new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < CIRCLE_COUNT; i++) {
int x = random.nextInt(getWidth() - MAX_RADIUS * 2) + MAX_RADIUS;
int y = random.nextInt(getHeight() - MAX_RADIUS * 2) + MAX_RADIUS;
int radius = random.nextInt(MAX_RADIUS - MIN_RADIUS + 1) + MIN_RADIUS;
Color color = getRandomColor();
g.setColor(color);
g.fillOval(x - radius, y - radius, radius * 2, radius * 2);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Random Circle");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
RandomCircle panel = new RandomCircle();
panel.setPreferredSize(new Dimension(500, 500));
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
```
这个代码创建了一个`RandomCircle`类,继承自`JPanel`,覆盖了`paintComponent`方法,在其中绘制了多个随机颜色和半径的圆。`getRandomColor`方法用于生成随机颜色,`paintComponent`方法则用于循环生成一定数量的圆,每个圆的位置、半径和颜色都是随机的。最后,在`main`方法中创建一个`JFrame`,将`RandomCircle`添加到其中,并显示出来。
javafx绘制圆,圆的大小由鼠标拖拽方式决定
可以使用 JavaFX 中的 Canvas 类来实现鼠标拖拽绘制圆形的功能。具体步骤如下:
1. 创建 Canvas 对象,并设置其宽度和高度。
2. 为 Canvas 对象添加鼠标事件监听器,监听鼠标按下、拖拽和释放事件。
3. 在鼠标按下事件处理方法中,记录下当前鼠标的坐标。
4. 在鼠标拖拽事件处理方法中,计算出圆的半径和圆心坐标,并使用 GraphicsContext 对象绘制圆形。
5. 在鼠标释放事件处理方法中,清除 Canvas 上的圆形。
下面是一个简单的示例代码,可以在 JavaFX 应用程序中运行:
```java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class DrawCircle extends Application {
private double startX, startY;
private Canvas canvas;
@Override
public void start(Stage primaryStage) {
// 创建 Canvas 对象
canvas = new Canvas(400, 400);
// 添加鼠标事件监听器
canvas.setOnMousePressed(e -> {
startX = e.getX();
startY = e.getY();
});
canvas.setOnMouseDragged(e -> {
double radius = Math.sqrt(Math.pow(e.getX() - startX, 2) + Math.pow(e.getY() - startY, 2));
double centerX = (e.getX() + startX) / 2;
double centerY = (e.getY() + startY) / 2;
// 绘制圆形
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
gc.setFill(Color.BLUE);
gc.setStroke(Color.BLACK);
gc.setLineWidth(1);
gc.fillOval(centerX - radius, centerY - radius, 2 * radius, 2 * radius);
gc.strokeOval(centerX - radius, centerY - radius, 2 * radius, 2 * radius);
});
canvas.setOnMouseReleased(e -> {
// 清除圆形
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
});
// 创建场景并显示
StackPane root = new StackPane(canvas);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.setTitle("Draw Circle");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个示例中,当用户按下鼠标并拖拽时,程序会根据鼠标的位置计算出圆形的半径和圆心坐标,并使用 GraphicsContext 对象绘制圆形。当用户释放鼠标时,程序会清除 Canvas 上的圆形。