2012-08-15 21 views
3

我需要在一個JPanel(它本身被放置在幾個JPanel層)內顯示圖像,我想調整圖像的大小以適應寬度JPanel的。現在,當我將圖像添加到JPanel時,JPanel的getWidth()等於屏幕寬度,因此圖像被調整爲屏幕寬度。但是在將Jpanel添加到其父級JPanel之後,寬度發生了變化,因此對於JPanel的寬度,圖像會變大。如何添加內容到一個JPanel後,只有它已經佈局

我想調整大小,並只在JPanel佈局後添加圖像,所以我得到適當的面板寬度,並可以相應地調整圖像的大小。

我該如何做到這一點?有沒有像afterLayout()這樣的事件?

+1

你是什麼意思的「添加圖像」?核心JPanel沒有api做這樣的事情......在SwingX的JXPanel中,您將設置一個ImagePainter(作爲面板的backgroundPainter),其拉伸屬性設置爲true:它會自動縮放自己以始終適合面板尺寸 – kleopatra 2012-08-15 11:55:25

+1

我傾向於在'paintComponent(Graphics)'上計算尺寸。 – 2012-08-15 14:23:33

回答

2

是的,你可以使用ComponentListener來做到這一點。 LayoutManager應該在佈置組件時調用setSize方法,因此應該能夠通知這些修改。

你正在尋找的方法是:

void componentResized(ComponentEvent e){} 

所以實現的ComponentListener接口,並將其通過addComponentListener()方法添加到所需的組件:

JPanel panel; 
... 
panel.addComponentListener(new YourClassImplementingComponentListener()); 
-1

使用ComponentListener,聽ComponentResized方法。在那裏寫你的邏輯來根據面板的大小調整圖像的大小。當面板調整大小時,圖像也會相應調整大小。

+0

嗯...這不同於並擴展了@Heisenbug的答案...? – kleopatra 2012-08-15 12:09:55

相關問題