java - 如何让BMP填充JPanel

标签 java image swing

如何让 BMP 填充 JPanel?

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class BMPPanel extends JPanel {


    String sciezka;
    Image image;
    int skala;
    int rozdzielczosc;
    Dimension d;
    public static int NORMALNA = 0, MALA = 1;

    public BMPPanel(String sciezka, int skala, int rozdzielczosc) {
        this.sciezka = sciezka;
        this.skala = skala;
        this.rozdzielczosc  = rozdzielczosc;
        super.setMaximumSize(d);
        this.d = new Dimension(400,400);
        this.go();
    }
    public BMPPanel(String sciezka, int skala) {
        this(sciezka,skala,200);
    }


    public void go() {
        try {
            File input = new File(sciezka);
            image = ImageIO.read(input);
        } catch (IOException e) {
            e.printStackTrace();
        }



        setPreferredSize(new Dimension(image.getWidth(null),
                image.getHeight(null)));
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponents(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(image, 0, 0, this);
    }

    @Override 
    public void setMaximumSize(Dimension d){

    }



}

最佳答案

您需要回答的第一个问题是,您是否希望保持 BMP 的纵横比?

如果你不这样做,那就很简单了

Image scaled = image.getScaledInstance(getWidth() - 1, getHeight() - 1, Image.SCALE_SMOOTH);

如果没有,那么你需要问问自己。我要“填充”还是“适合”图像。 Filling 将允许图像溢出面板,但会完全填充它,fit 将确保整个图像适合面板,但可能会留下间隙。

阅读此 answer这是对类似问题的回应

关于java - 如何让BMP填充JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12008507/

相关文章:

java - Circleci 图像中的后缀 "-stretch"意味着什么?

java - 启动类的主入口点的内部流程

c# - 使用 C# 将 HTML 控件(Div 或表)转换为图像

jquery - 我们如何在图片上传上实现这些功能

android - 一些用户在应用程序、资源加载方面遇到问题,我无法复制..图像/绘图加载

java - Android中的回调是什么?

java - HashMap 的数组/列表?

java - jmenuitem选择对话

java - 程序不监听 KeyBindings 或 PaintComponent()

java - 如何使 JPanel 适合 JTabbedPane 大小?