Graphics.drawString() 不在屏幕上绘制任何东西

问题描述

我正在尝试使用 Graphics.drawString() 绘制字符串。但由于某种原因,屏幕上什么也没有显示。例如,绘制矩形有效,但 drawString() 无效。

这是我的代码

public class Main extends JFrame {

    public static void main(String[] args) {
        new Main();
    }

    public Main() {
        this.setSize(350,500);
        this.setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
    
        //nothing is drawn on the screen.
        g.setColor(Color.RED);
        g.setFont(new Font("Arial",Font.BOLD,25));
        g.drawString("Hello",10,10);
    }
}

解决方法

当使用 Graphics 类在 Component 上绘制任何东西时,您应该知道一件重要的事情:

虽然 drawRect(int x,int y,int width,int height) 方法中的 xy左上角,但在 drawString(String s,int x,int y) 中,xy左下角。

此外,当您在 JFrame 中绘制任何内容时,位置从 JFrame 标题的左上角开始,因此第一个可绘制像素在点 (~8,~28),这在每个操作系统中都不同。