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

标签 java swing jpanel bufferedimage jmenu

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

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

单击此菜单项后,该灰色框将留在菜单后面,我可以通过使用鼠标移动场景来使其消失,这基本上调用了单击菜单项后使用的相同方法。这让我很困惑为什么菜单项方法调用不会删除该框,但下次调用此方法会删除该框。

知道为什么会发生这种情况和/或如何解决它吗?

谢谢。

图片(A、B是JMenuBar上的JMenus,下面的灰色框是JRadioButtonMenuItem选择后留下的): A, B are JMenus on JMenuBar and the gray box below is left after JRadioButtonMenuItem selection

最佳答案

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

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

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

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

关于java - JMenu 在绘制图像的 JPanel 上方留下一个灰色框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788461/

相关文章:

java - 如何获得以另一个 JPanel 为中心的 JPanel 的边界?

具有不同名称的java项目部署

java - Java中如何创建子类使得参数为子类类型

java - 给予按钮鼠标单击焦点

java - 如何修正这个程序?

java - 在激活菜单项时显示标签

java - 在运行时将组件添加到 jpanel

java - 自定义 View 不会动态出现在 TableRow 中

java - 更改框架内面板的背景颜色

java - 枚举 JFrame 上的所有控件