如何将对象中的文本居中并允许它随对象移动

时间:2018-05-06 00:36:51

标签: java awt

所以我有一个椭圆形,我希望能够将我的名字放入其中,以便当我移动椭圆形时,名称保持在中间。

另外当我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);

 }

1 个答案:

答案 0 :(得分:2)

以下内容应使文字居中于圆圈内:

int spotNameX = spot+100-((g.getFontMetrics().stringWidth(text)/2));
int spotNameY = spot+100;

g.drawString(text, spotNameX, spotNameY);

spot是圆圈的最左侧(最左侧x位置)。如果我们向其添加100200的一半,即圆的宽度的一半),我们会在圆的正中心得到x位置。但是,如果我们要在这里绘制文本,那么它就太过分了 - 要居中,一半的文本需要在左侧,一半需要在右侧。

因此,要正确居中,您需要get the width of the text in pixels,然后将其除以一半并从先前计算的值中减去该值。

换句话说:

  

(最左边+宽度的一半) - (物体宽度的一半到中心)=从物体到中心开始x坐标

关于您的其他问题,它应该自动清除Swing调用paint(Graphics g)函数的时间。如果没有,请尝试添加

super.paint(g);

作为paint(Graphics g)函数中的第一行,可能会使其正常工作。

相关问题