所以我有一个椭圆形,我希望能够将我的名字放入其中,以便当我移动椭圆形时,名称保持在中间。
另外当我repaint()
时,如何清除首先是什么,所以没有多个对象?
这是我目前的代码:
public void paint(Graphics g)
{
g.setColor(Color.GREEN);
g.drawOval(spot, spot, 200, 200);
int spotName = spot +60;
int spotName_2 = spot_2 + 100;
String text = "Name";
g.drawString(text, spotName, spotName_2);
//add image
g.drawImage(image, 0, 0, this);
}
答案 0 :(得分:2)
以下内容应使文字居中于圆圈内:
int spotNameX = spot+100-((g.getFontMetrics().stringWidth(text)/2));
int spotNameY = spot+100;
g.drawString(text, spotNameX, spotNameY);
spot
是圆圈的最左侧(最左侧x
位置)。如果我们向其添加100
(200
的一半,即圆的宽度的一半),我们会在圆的正中心得到x
位置。但是,如果我们要在这里绘制文本,那么它就太过分了 - 要居中,一半的文本需要在左侧,一半需要在右侧。
因此,要正确居中,您需要get the width of the text in pixels,然后将其除以一半并从先前计算的值中减去该值。
换句话说:
(最左边+宽度的一半) - (物体宽度的一半到中心)=从物体到中心开始x坐标
关于您的其他问题,它应该自动清除Swing调用paint(Graphics g)
函数的时间。如果没有,请尝试添加
super.paint(g);
作为paint(Graphics g)
函数中的第一行,可能会使其正常工作。