0

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

图片 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();

谁能帮我解决这个问题?

非常感谢。

4

1 回答 1

0

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

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

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

于 2012-04-18T08:11:29.723 回答