2

我需要String在椭圆上写一个,所以椭圆的中间会显示文本。文本由g.drawString();方法绘制,椭圆由g.fillOval();. 怎么可能String放在上面?

4

1 回答 1

5

在此处输入图像描述

import java.awt.*;
import javax.swing.*;

public class FrameTest {
    public static void main(String args[]) {
        JFrame f = new JFrame();
        f.add(new JComponent() {
            public void paintComponent(Graphics g) {

                // Some parameters.
                String text = "Some Label";
                int centerX = 150, centerY = 100;
                int ovalWidth = 200, ovalHeight = 100;

                // Draw oval
                g.setColor(Color.BLUE);
                g.fillOval(centerX-ovalWidth/2, centerY-ovalHeight/2,
                           ovalWidth, ovalHeight);

                // Draw centered text
                FontMetrics fm = g.getFontMetrics();
                double textWidth = fm.getStringBounds(text, g).getWidth();
                g.setColor(Color.WHITE);
                g.drawString(text, (int) (centerX - textWidth/2),
                                   (int) (centerY + fm.getMaxAscent() / 2));

            }
        });

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(300, 300);
        f.setVisible(true);
    }
}
于 2012-08-21T07:58:39.603 回答