我的文字需要水平居中,并且在窗口顶部下方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);
}
答案 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);