JMenu 在绘制图像的 JPanel 上方留下一个灰色框

JMenu leaves a gray box above a JPanel on which image is drawn

我正在尝试为我的程序创建一个菜单,它使用 .getGraphics().drawImage(..) 在 JPanel 上绘制一些几何对象

我遇到的问题是,在我 select 这个菜单上的一个项目之后,文本消失了,但背景颜色没有。该选择调用了一种方法,该方法使用上述命令在该面板上重绘图像,但显然它无助于删除它。

在我点击这个菜单项之后,这个灰色框留在了菜单之后,我可以通过使用鼠标移动场景来让它消失,这基本上调用了菜单项点击后使用的相同方法。这让我感到困惑,为什么菜单项方法调用没有删除框,但此方法的下一次调用确实如此。

知道为什么会这样吗and/or如何解决?

谢谢。

图片(A、B为JMenuBar上的JMenus,下图灰框在JRadioButtonMenuItem后留下selection):

which draws some geometric objects on a JPanel using .getGraphics().drawImage(..)

不要使用getGraphics()进行自定义绘画。

自定义绘画是通过覆盖 JPanelpaintComponent(...) 方法完成的。并且不要忘记调用 super.paintComponent(...) 作为第一个语句。

阅读有关 Custom Painting 的 Swing 教程部分,了解更多信息和工作示例。