在 paint 方法中调用时 JLabel 不显示

JLabel not showing when called in paint method

我有以下代码:

public class Canvas extends JPanel{
 JLabel label = new JLabel();
 public void init()
    {
        label.setSize(100, 100);
        label.setLocation(10, 10);
        label.setText("lalallaalal");
        this.add(label);
    }
@Override
public void paint(Graphics g) {
        super.paint(g);

                paintRoad(g);
                paintBorders(g);

                paintEnemies(g, enemies);
                paintPlayer(g);
    }

我希望每次重绘 JPanel 时都重绘标签,但是当我将 this.add(label) 放在 paint 方法的末尾时,它不显示标签。 知道为什么吗?

paint() 调用 paintComponent()。最好覆盖 paintComponent 而不是 paint.

protected void paintComponent(Graphics g)

A Closer Look at the Paint Mechanism

不使用 JLabel,尝试在绘画方法中使用 drawString(String str, int X, int y) 方法。

public void paint(Graphics g){
    g.drawString(label.getText(), 110, 110);
}