2012-01-31 37 views
2

我有一個JScrollPane,裏面放置了一個JPanel。 還有一個按鈕,當按下時,一個隨機長度和寬度的矩形將在面板上繪製爲 。所以每次按下此按鈕時,都會調用JPanel的重繪方法。如何讓JPanel的長度和寬度自動擴展?

問題是,有時矩形的長度很高,所以JPanel並沒有全部顯示,只是它已經適合面板的一部分。

我怎樣才能讓JPanel顯示內部繪製的內容?無關矩形的尺寸是什麼?

+1

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。一種解決方案可能是設置面板的首選大小(大於矩形)並驗證滾動窗格。 – 2012-01-31 15:54:52

回答

2

一種選擇是繪製矩形到類似尺寸的BufferedImageGraphics對象,然後使用這個圖像作爲一個JLabelIcon。將此標籤添加到面板的任意座標處,然後revalidateJScrollPane併發出repaint請求。

+1

如果您每次添加JLabel,那麼您不必在JScrollPane上重新繪製或重新驗證,只需使用setViewportView(組件視圖)或JViewport.setView(...),任何方法都可以。 Regards – 2012-01-31 16:09:58

+0

啊,對。滾動窗格將自動執行此操作......偉大的一點! – mre 2012-01-31 16:18:48

1

您的ScrollPane限制了尺寸,默認面板將拉伸以適應其子組件。 ScrollPane是固定的,這就是爲什麼它被稱爲ScrollPane,你可以做的是以編程方式計算矩形的大小,並在每次按下按鈕或更好的每次調用時重新繪製該大小的scrollpane,您應該知道可能的大小並使GUI適合足以彌補所有這些尺寸。

相關問題