如何适应图像大小JFrame的大小?(How to fit Image size to JFrame

2019-07-02 10:10发布

我有一个JPanelJFrame 。 我装在一个画面JPanel ,但其表示只是其中的一部分:这是我做这件事的部分代码:

JPanel panelImg = new JPanel()
{
    public void paintComponent(Graphics g)
    {
        Image img = new ImageIcon("Welcome.png").getImage();
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);
        g.drawImage(img, 0, 0, null);
    }
};
mainFrame.add(panelImg);

因此,这是它的样子:

完整的图片看起来是这样的:

有缩放图片的方式JFrame的规模? 提前致谢

Answer 1:

首先,我不会被加载内部的图像paintComponent方法,这个方法是调用反复(和快速连续某些次),你不想做任何事情,需要时间来执行或不必要地消耗资源

检查出的Java:JPanel的背景图像的维持纵横比为建议对充/嵌合图像的给定区域



Answer 2:

你想要drawImage()它可以扩展至目标容器。 见引用的文章在这里的替代品。 例如,

g.drawImage(img, 0, 0, getWidth(), getHeight(), this);


Answer 3:

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class ImagePanel extends JPanel {

    Image image;

    public void setBackground(Image image) {
        this.image = image;
    }

    @Override
    public void paintComponent(Graphics G) {
        super.paintComponent(G);
        G.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), null);
    }

}

然后使用ImagePanel对象方法SetBackground

imagePanel1.SetBackGround(ImageIO.read(new File("extensions/images/background.jpg")));


Answer 4:

这很简单。 按照这个例子,

public class BasePanel extends JPanel {

ImageIcon backImage;
public BasePanel() {
    backImage = new ImageIcon("src/images/welcome.png");
}

@Override
protected void paintComponent(Graphics g) {
    BufferedImage scaledImage = getScaledImage();
    super.paintComponent(g);
    g.drawImage(scaledImage, 0, 0, null);
}

private BufferedImage getScaledImage(){
    BufferedImage image = new BufferedImage(getWidth(),getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = (Graphics2D) image.createGraphics();
    g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
    g2d.drawImage(backImage.getImage(), 0, 0,getWidth(),getHeight(), null);

    return image;
}

}


Answer 5:

你可以试试这个:

Image img = new ImageIcon(ImageIO.read(new File("welcome.png"))
                               .getScaledInstance(WIDTH, HEIGHT, Image.SCALE_SMOOTH)));


文章来源: How to fit Image size to JFrame Size?