Java JPanel中的奇怪上边距,在JLabel中添加了图像

Java JPanel中的奇怪上边距,在JLabel中添加了图像,java,image,swing,jlabel,jai,Java,Image,Swing,Jlabel,Jai,我将一些图像添加到JPanel。因此,我向JLabel添加一个图像作为ImageIcon,并将其添加到主JPanel。虽然我将边界(setBounds)设置为图像大小,但在下面显示的图像顶部有几个像素的边距 我还尝试将图像添加为DisplayJai(),但没有成功(使用DisplayJai,图像也以一种奇怪的方式被剪切) 代码的重要部分是 JPanel srcJPanel = new JPanel(); srcJPanel.setBounds(posW, posH, width

我将一些图像添加到
JPanel
。因此,我向
JLabel
添加一个图像作为
ImageIcon
,并将其添加到主
JPanel
。虽然我将边界(setBounds)设置为图像大小,但在下面显示的图像顶部有几个像素的边距

我还尝试将图像添加为
DisplayJai()
,但没有成功(使用
DisplayJai
,图像也以一种奇怪的方式被剪切)

代码的重要部分是

    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();
有人能帮我解决这个问题吗


非常感谢。

只有当主面板上有“null”布局时,才应使用setBounds方法,否则每次验证时,边界将重置为默认布局边界。要设置“null”布局,只需将null传递到主面板的setLayout方法中

在大多数情况下,也不需要使用“null”布局。您可以简单地使用现有布局或编写自己的布局,以避免使用“null”布局可能出现的问题

无论如何,您提供的代码不足以看到实际问题-最好发布一个。

1)
setBounds
不要这样做,这可能是问题的核心。而是使用布局。2) 看到使用的图像可能会更有趣。你能上传一个显示问题的(小字节)图像吗?3) 为了更快地获得更好的帮助,请发布一个。4) 有趣的屏幕截图,BG中的图像是作为延时完成的吗?