2012-04-18 104 views
0

我在JPanel中添加了一些圖像。因此,我將一張圖像作爲ImageIcon添加到JLabel,並將其添加到主要的JPanel。雖然我將邊界(setBounds)設置爲圖像大小,但在下面顯示的圖像頂部會有幾個像素的邊距。Jaabel中添加圖像的JPanel中的奇怪頂邊距

image http://w752749.open.ge.tt/1/files/64dsvTG/0/blob/x675

我也試圖將圖像添加爲DisplayJai(),沒有成功(與DisplayJai,圖像也已在一種奇怪的方式croped)。

代碼的重要組成部分,是

JPanel srcJPanel = new JPanel(); 
    srcJPanel.setBounds(posW, posH, width, height); 
    srcJPanel.setBorder(new LineBorder(Color.GREEN.darker(), 2)); 

    Image image = newImage.getScaledImg().getAsBufferedImage(); 
    JLabel l = new JLabel(new ImageIcon(image)); 
    l.setBorder(new LineBorder(Color.RED.darker(), 2)); 
    srcJPanel.add(l, BorderLayout.CENTER); 

    MainPanel.add(srcJPanel); 
    this.validate(); 

誰能幫我這個保證金?

非常感謝。

+2

1)'setBounds'不要這樣做,這可能是問題的核心。而是使用佈局。 2)看到使用的圖像可能更有趣。你可以上傳一個(**小字節**)圖像來顯示問題嗎? 3)爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 4)有趣的截圖,BG中的圖像是作爲延時完成的嗎? – 2012-04-18 05:46:41

回答

0

只有當您的MainPanel上有「null」佈局時,才應使用setBounds方法,否則每次驗證您的邊界將被重置爲默認佈局邊界。要設置「null」佈局 - 只需將null傳遞給MainPanel的setLayout方法。

在大多數情況下,使用「null」佈局也是不必要的。您可以簡單地使用現有佈局或編寫自己的佈局,以避免使用「空白」佈局可能會遇到的問題。

無論如何,你提供的代碼是不足以看到實際問題 - 更好地張貼SSCCE