使用Java图形API时遇到的问题

使用Java图形API时遇到的问题,java,swing,graphics,awt,segment,Java,Swing,Graphics,Awt,Segment,我对Java中的AWT/Swing还不熟悉,我正在进行三次尝试,只是为了得出两点和相关的部分。我写的代码非常简单: g.fillOval(100, 100, 10, 10); g.fillOval(200, 500, 10, 10); g.drawLine(100, 100, 200, 500); 但它并没有像我预期的那样工作,如下图所示。我没有足够的声誉来发布图片,所以请检查一下这个 当我说线段的端点应该在点内时,我错了吗?我不知道我做错了什么:/ 谢谢大家。您的问题是椭

我对Java中的AWT/Swing还不熟悉,我正在进行三次尝试,只是为了得出两点和相关的部分。我写的代码非常简单:

   g.fillOval(100, 100, 10, 10);
   g.fillOval(200, 500, 10, 10);
   g.drawLine(100, 100, 200, 500);
但它并没有像我预期的那样工作,如下图所示。我没有足够的声誉来发布图片,所以请检查一下这个

当我说线段的端点应该在点内时,我错了吗?我不知道我做错了什么:/
谢谢大家。

您的问题是椭圆形的x点和y点位于包围它的矩形的左上角,而您的线条在这些角上结束。相反,你应该让你的线在椭圆的中心结束。通过将椭圆的宽度和高度的1/2添加到左上角,可以轻松计算出中心,如下所示:

g.drawLine(105, 105, 205, 505);
注意:尽可能避免使用“神奇”数字

e、 g


在绘制圆时,我更喜欢指定圆心和半径。此方法调整fillOval或drawOval方法以处理中心点和半径

public void drawCircle(Graphics g, int x, int y, int radius) {
    g.drawOval(x - radius, y - radius, radius + radius, 
            radius + radius);
}

我认为在画椭圆的x和y时,它是中心,而不是左上角。谢谢你的回答,它解决了我的问题。@Alex:很高兴它有帮助。这就是JavaAPI可以帮助您的地方,因为它确切地告诉您方法参数的含义。
public void drawCircle(Graphics g, int x, int y, int radius) {
    g.drawOval(x - radius, y - radius, radius + radius, 
            radius + radius);
}