【问题标题】:Strange top-margin in JPanel with added Image in JLabelJPanel 中奇怪的上边距,在 JLabel 中添加了图像
【发布时间】:2012-04-18 05:38:06
【问题描述】:

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

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

我还尝试将图像添加为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();

谁能帮我解决这个问题?

非常感谢。

【问题讨论】:

  • 1) setBounds 不要那样做,这可能是问题的核心。而是使用布局。 2)查看使用的图像可能会更有趣。您能否上传一张(以字节为单位的小)图像来显示问题? 3) 为了尽快获得更好的帮助,请发布SSCCE。 4) 有趣的截图,BG 中的那张图片是延时拍摄的吗?

标签: java image swing jlabel jai


【解决方案1】:

只有在 MainPanel 上有“null”布局时才应使用 setBounds 方法,否则每次验证时,您的边界都将重置为默认布局边界。要设置“null”布局 - 只需将 null 传递给 MainPanel 的 setLayout 方法。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多