0

我的文本需要水平居中并在窗口顶部下方 20 像素处。此外,目标徽标 (g.fillOvals) 需要在文本下方水平和垂直居中。我怎么做?我知道 g.drawString x 和 y 坐标编辑文本,但我的变化几乎没有。谢谢!

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        setBackground(Color.WHITE);
        Font textFont = new Font("Helvetica", Font.BOLD, 72);

        setFont(textFont);

        FontMetrics fm = g.getFontMetrics(textFont);
        int ascend = fm.getAscent();
        int w = getWidth();
        int h = getHeight();
        int sw = fm.stringWidth("Welcome to Target");

        g.drawString("Welcome to Target", w/2 - sw/2, h/2 + ascend/2);


        g.setColor(Color.red);
        g.fillOval((w / 2) - 100, (w / 2) - 100, 200, 200);

        g.setColor(Color.WHITE);
        g.fillOval((w / 2) - 65, (w / 2) - 65, 130, 130);

        g.setColor(Color.red);
        g.fillOval((w / 2) - 30, (w / 2) - 30, 60, 60);
    }
4

1 回答 1

0

尝试这个:

g.drawString("Welcome to Target", (w/2 - sw/2), (FONT_HEIGHT + 20));

编辑:使您的字体高度恒定,以便我们可以更好地管理它并允许更一致的编程。

final static String FONT_HEIGHT = 72;
g.fillOvals((w/2 - FONT_HEIGHT), 200, (w/2 FONT_HEIGHT), 200);
于 2013-02-28T05:21:00.550 回答