Java 图形#drawText,旧文本不会被擦除

Java 图形#drawText,旧文本不会被擦除,java,swing,paint,Java,Swing,Paint,我有一个JPanel,它覆盖了这样的组件 @Override public void paintComponent(Graphics g) { super.paintComponent(g); //[...] g.drawString(" x " + model.getCount(l), getTilesWidth() + ship.getWidth() + PREVIEW_OFFSET_X + 5, y - 10); //[...] } 但是,当我调用

我有一个JPanel,它覆盖了这样的组件

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);    
    //[...]
    g.drawString(" x " + model.getCount(l), getTilesWidth() + ship.getWidth() + PREVIEW_OFFSET_X + 5, y - 10);
    //[...]
}

但是,当我调用repaint和model.getCount(l)时,新字符串只是在旧字符串的上方绘制。然而,当我调整窗口大小时,一切又恢复正常。原因可能是什么?

在尝试绘制新文本之前,您很可能需要用背景色填充旧文本所在的区域。

哦,错误实际上在其他地方,我真的忘记了我的类有一个JPanel以外的超类,对此表示抱歉。

-1,没有足够的信息让我们做出合理的猜测。根据您发布的两行代码,您的面板应该正确地重新绘制()。因此,问题在于您没有发布的代码。别让我们一直猜。这篇文章展示了问题所在。JPanel负责绘制自己的背景。调用super.paintComponent()可确保完成此操作。这样做的唯一原因是,如果海报上显示了面板的不透明性。这就是为什么SSCCE应该张贴每个问题的原因。它消除了愚蠢的错误,所以我们可以把时间花在真正的问题上。