在JPanel中处理文本

时间:2013-02-28 05:02:56

标签: text jpanel

我的文字需要水平居中,并且在窗口顶部下方20px。此外,目标徽标(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);
    }

1 个答案:

答案 0 :(得分: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);