我正在开发一个非常简单的思维导图应用程序,我使用JPanel来绘制思维导图的结构。思维导图的节点是圆形,如果在节点中写入,则结构会在该方向上扩展。我将我的JPanel放在JScrollPane中,但我的问题是,我只能将其向下扩展,或向右扩展,但它也应该向左和向上扩展。当我的JScrollPane扩展到"负面指示"如此向上或向左,我尝试计算我移动了多少个坐标,然后重新绘制整个图形,分别更改所有内容的x和y坐标。但是它仍然不起作用,它画出了正确可见的部分,但是当我向下滚动时,我的绘图的其余部分消失了。
我希望有一个解决方案,因为我已经搜索了几个小时,没有发现任何有用的东西,因为我无法想出任何其他方法来解决这个问题。谢谢您的帮助! :)
答案 0 :(得分:1)
当我的JScrollPane应该向“负方向”向上扩展或向左扩展
您不能有负坐标,因此您需要将所有索引转换为正值。
如果没有,我会调整JPanel的大小。
这是关键。在将所有节点转换为正值后,您需要覆盖自定义面板的getPreferredSize(...)
方法以返回适当的面板大小。
然后你调用:
revalidate();
repaint();
在面板上以确保调用布局管理器并重新绘制节点。