我正在编写一个绘图应用程序,它使用蜡染框架的 JSVGCanvas 类。我的应用程序的内容窗格是一个 JLayeredPane,其中包含多个堆叠在一起的 JPanel。其中一个面板包含您可以在其上绘制的 JSVGCanvas。
但是,当我在屏幕上绘制内容时,有时会出现一些奇怪的屏幕碎片,如下图所示(黑线是用鼠标绘制的):
图纸截图 http://cip.uni-trier.de/~schaefer/batikbug.jpg
我不确定这是蜡染还是摇摆的问题,因为当我将鼠标悬停在具有自定义 ImageIcon 的红色 JButton 上时会发生类似的错误。在下图中,您可以看到其他按钮似乎出现在红色按钮的背景中。
按钮截图 http://cip.uni-trier.de/~schaefer/swingbug.png
有谁知道为什么会发生这种情况或我该如何解决?
编辑:
在 mouseDragged-function 中,我正在执行以下操作:
//newNode was calculated before
Node updateNode = findNodeById(id); //find some node
if(updateNode == null)
{
svgComponent.getSvgCanvas().getSVGDocument().adoptNode(newNode);
svgComponent.getSvgCanvas().getSVGDocument().getDocumentElement().appendChild(newNode);
}
else
{
svgComponent.getSvgCanvas().getSVGDocument().adoptNode(newNode);
svgComponent.getSvgCanvas().getSVGDocument().getDocumentElement().replaceChild(newNode, updateNode);
};
window.contentpane.repaint(); //window is the main JFrame, the contentpane is a JLayeredPane
svgComponent 是一个包含 JSVGCanvas 的 JComponent。