Java AWT Fillova()不工作

Java AWT Fillova()不工作,java,swing,awt,java-2d,Java,Swing,Awt,Java 2d,我正在做一个画图表的程序,所以我想画点!我希望点是圆形的,因为这通常是点的表示方式,据我所知,g2。fillOval(x,y,高度,宽度)应该在(x,y)处绘制一个填充的椭圆形,高度高度和宽度宽度。这是我目前的代码: private void drawCenteredCircle(Graphics g, int x, int y, int radius) { Graphics2D g2 = (Graphics2D) g.create(); g2.setColor(pointCol

我正在做一个画图表的程序,所以我想画点!我希望点是圆形的,因为这通常是点的表示方式,据我所知,
g2。fillOval(x,y,高度,宽度)
应该在
(x,y)
处绘制一个填充的椭圆形,高度
高度
和宽度
宽度
。这是我目前的代码:

private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setColor(pointColor);
    g2.fillOval(x-radius, y-radius, 2*radius, 2*radius);
    g2.dispose();
}
然后在
JPanel
paintComponent()方法中调用。它确实画了,所以我知道代码正在运行,但出于某种原因,它画了一个正方形,如下所示:

我也试过:

private void drawCenteredCircle(Graphics g, int x, int y, int radius) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setColor(pointColor);
    g2.fill(new Ellipse2D.Float(x-radius, y-radius, 2*radius, 2*radius);
    g2.dispose();
}

但是得到了同样的结果。非常感谢您提供有关如何绘制填充圆/椭圆的任何帮助。

您需要设置Graphic2D的渲染提示以处理别名。这将平滑可能导致(小)圆渲染为正方形的锯齿。比如:

Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

我猜如果没有一个像样的答案,你就不会得到像样的答案。如果时间是最重要的,请看看这个链接,考虑创建和发布其中的一个。还要注意的是,所有代码都应该发布在这里,而不是在一个链接中。也许这次你的问题是由于渲染提示设置不正确。测试一下。链接中没有发布任何代码,这是我的结果的图像。另外,感谢您提供的最小、完整且可验证的示例页面,我一定会通读该页面并使用该格式发布问题。