这个问题研究很久以后,我自行进行了解决
首先说下问题,界面显示其实是一个很复杂的过程,在界面不断的点击变化,出现新的菜单,菜单消失等等步骤中,界面的范围内斗进行了重绘(应该是整个界面的重绘),因此,在每一次重绘的时候都要重新绘制原来显示的所有元素,否则会出现错误,这就解释了为什么我用条件控制图片的加载,只在图片加载第一次绘制,会出现下拉菜单会出现那种灰色颜色块的原因,在新一次的绘制中,图片没有重新绘制,而绘制弹出菜单的时候对该处的背景进行了清除
所以paintComponent方法中,要保证每次绘制的时候,都会把所有原来要绘制的内容重新绘制一遍,这样也解决了第二个问题,鼠标绘制的线条,全部要保存下来,每次都重头重新绘制一次,这样才会保证不会出现界面变化(比如最小化后再打开,比如变化界面大小)后,出现线条不见的现象
当然,这样是非常消耗资源的,我期待有高手能指点我,是不是有重绘“脏”了的部分区域的机制,来提高效率,或者将当前内容进行缓存后再绘制之类的,如有知道的,希望能私信指教,不甚感激