2012-12-15 44 views
1

我有一个JScrollPane,里面有一个JPanel。 JPanel中被“放大”使用中的paintComponent方法如下代码:Java JScrollPane不按预期工作

g2d.translate(this.getWidth()/2, this.getHeight()/2); 
g2d.scale(scaleX, scaleY); 
g2d.translate(-this.getWidth()/2, -this.getHeight()/2); 

现在,当我“放大”并JPanel中被放大到它比JScrollPane的我期望的垂直大点和水平滚动条出现,但他们不。每次JPanel“缩放”时,我都试图通过将JPanel的首选大小设置为新缩放面板的大小来解决此问题,但在用户调整JFramePane的大小之前,这不会执行任何操作(也许这会触发重新验证?)。我希望有人能告诉我发生了什么事情,甚至是达到预期效果的方法。谢谢!

+0

为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

回答

2

我试图通过设置JPanel的优选尺寸来解决这个..在JScrollPane

呼叫revalidate()

+0

我在JPanel上调用了revalidate(),它现在可以正常工作,谢谢!但是,即使这样做起作用,它看起来并不合法,因为我设置了首选大小,并在组件每次绘制时重新验证。我应该移动这个还是完全正确?再次感谢。 –

+0

*“我应该移动还是完全正常?”*这是'非常好'。调用'revalidate()'可以有效地告诉JRE“组件已经被添加,删除了重新调整大小,再次对容器进行布局(如果需要,可以创建滚动条)”。 –

+0

感谢您的帮助,这绝对是我的问题的答案。 –