首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使文本在对象中居中,并允许它与对象一起移动?

如何使文本在对象中居中,并允许它与对象一起移动?
EN

Stack Overflow用户
提问于 2018-05-06 00:36:51
回答 1查看 71关注 0票数 0

所以我有一个椭圆形,我想把我的名字放在里面,这样当我移动椭圆形的时候,名字就在中间。

另外,当我使用repaint()时,如何首先清除哪些内容,这样就没有多个对象了?

以下是我的当前代码:

代码语言:javascript
运行
复制
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);

 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-06 03:53:38

以下内容应以圆圈为中心:

代码语言:javascript
运行
复制
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)函数时,它应该会自动清除。如果没有,请尝试添加

代码语言:javascript
运行
复制
super.paint(g);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50195248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档