如何让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);
如果没有,那么你需要问问你自己。我想“填充”或“适合”图像吗?填充将允许图像溢出面板,但会完全填充它,适合将确保整个图像适合面板,但可能会留下间隙。
读一下这篇文章answer https://stackoverflow.com/questions/11959758/java-maintaining-aspect-ratio-of-jpanel-background-image/11959928#11959928这是对类似问题的回应
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)