有一個圓形(行星),通過fillOval()繪製。我需要將文字(數字)寫在圓圈上,以便它必須始終與中心對齊。圓的中心和半徑。 據我所知,我需要計算文本的寬度和長度(由getStringBounds嘗試),但無法正常工作。Circle中心的文字
protected void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
for (Planet planet : planets) {
g2d.setColor(planet.getColor());
g2d.fillOval((int) planet.getX() - planet.getRadius(), (int) planet.getY() - planet.getRadius(),
planet.getRadius() * 2, planet.getRadius() * 2);
g.setFont(new Font("Serif", Font.PLAIN, 20));
g.setColor(Color.black);
String s = String.valueOf(250);
FontMetrics fm = g.getFontMetrics();
double textWidth = fm.getStringBounds(s, g).getWidth();
g.setColor(Color.white);
g.drawString(s, (int) ((int) planet.getX() - textWidth/2), ((int) planet.getY() + fm.getMaxAscent()/2));}}
請創建併發佈一個小而簡單的完整程序,說明您的問題,[MCVE](http://stackoverflow.com/help/mcve)。請檢查鏈接瞭解這個非常有用的工具的詳細信息。 – 2014-08-27 13:11:13
基本的想法似乎沒問題(儘管你可能想要'(int)planet.getY() - fm.getMaxAscent()/ 2)'),那麼它是如何工作的?文本有多遠? textWidth的價值是什麼,這個星球的地位是什麼? – nos 2014-08-27 13:13:50
'但不能正常工作。「 - 這是什麼意思?它總是在右/左/上/下。我們不介意讀者。我們無法猜測你的問題是什麼。 – camickr 2014-08-27 14:19:59