我正在使用Swing为UI编写Java应用程序中的绘图应用程序(本文结尾包含原型绘图)。该映射是使用扩展JPanel的自定义MapPanel类实现的。地图从服务器获取为一系列300x300图像(图块),只要调用paintMap()方法,该图像就会绘制在MapPanel上。由于代码的长度和复杂性(多类等)我不能包括所有的在这里,但paintMap()方法大致如下:在Swing中使用自定义绘画的分层面板
// Loop for each map tile (image, xPos, yPos)
getGraphics().drawImage(image, xPos, yPos, 300, 300, null);
我想有其他的JPanel (包含用于缩放控制的JSlider)叠加在地图面板的顶部,但是我很难解决这个问题。每当我绘制地图时,覆盖的JPanel都会消失。如果我在paintMap()方法中重绘覆盖的JPanel,则在拖动地图(并因此不断重绘)时会严重闪烁。
有关如何实现我的UI而不闪烁的任何建议?
将drawImage()调用移至paintComponent方法似乎解决了我的问题 - 谢谢! – Jonathan 2012-03-25 04:22:21