2012-12-15 28 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

感謝您的幫助,這絕對是我的問題的答案。 –