2012-04-18 68 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