2013-03-18 52 views
2

所以我的程序創建一個MigLayout GUI幷包含了許多的創作上給出圖像的JLabel。在這裏你可以看到最後的結果是什麼,現在:MigLayout的JLabel和固定大小

http://i.imgur.com/evI0sYT.jpg

的圖像是太大了,去了他們包含在JPanel的大小很簡單,就是創造它是大小原始圖像是,然後顯示,但是,這顯然是一個問題。有沒有一種方法可以修復大小,以便它能夠適合GUI中的每個組件?對於初學者,我想確保藍色部分不會像那樣移動,我希望它保持它設置爲(一半高度)的大小。我還希望圖像在保持原始圖像縱橫比的情況下佔用最大尺寸。

我試過設置JLabel的大小和首選大小,我試着用MigLayout給它一些參數,當我告訴它添加JLabel時,它們都沒有爲我工作。我很喜歡擴展JLabel並寫一些東西來解決它的想法,但並不完全知道如何去做。我知道我可以覆蓋油漆,但不知道我真的要做什麼。無需額外的參數被添加和創建

JPanel jpCards = new JPanel(new MigLayout("insets 0, gapx 0, gapy 0, wrap 7", "grow")); 

我的卡只是通過給它們顯示的大小的圖片:

我的JPanel設定如下。

爲了澄清,我需要改變實際的JLabel的大小,而不僅僅是內部包含的內容,因爲他們稍後會有鼠標監聽器。如果只有圖像發生了變化,我將遇到鼠標偵聽器在JLabel內部檢測到的問題,它看起來不像它應該是

回答

1

我通過在製作JLabel之前更改圖標的大小來解決此問題。

我發現在Java中,當您創建一個給定某種圖像的JLabel時,它將適合JLabel的大小,使其成爲您給它的圖像的大小。因此,而不是創建一個JLabel給出的原始圖像,我縮放首先使用屏幕的尺寸,然後創建一個JLabel出來。

還有一些工作要做,因爲我希望用戶能夠調整屏幕大小並調整圖像大小。我將不得不花一些時間來弄清楚如何才能調整大小,但這不是一個主要問題。