JAVA Swing设置背景图片大小不被裁剪
描述:以前写java swing项目的时候,把图片放入标签当中,背景图太大,或者太小,就会导致图片显示不全,或者会有大量留白的地方
1. 解决方式代码
//主界面代码
//创建一个标签用于存放,图片当背景
JLabel lblNewLabel_4 = new JLabel("");
//存放图片相对位置
String imagePath = "img\\loginbg.jpg"; // 替换为实际图像的文件路径
//设置标签大小,这种可以设计成自己想要大小
lblNewLabel_4.setBounds(-68, -31, 613, 379);
//将图片进行转换添加到标签当中 这个是工具类,具体参考下面给出代码
Tools.setImg(imagePath,lblNewLabel_4);
//将标签添加到界面上面
frame.getContentPane().add(lblNewLabel_4);
实现图片的转换的java工具类
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
import javax.swing.table.DefaultTableModel;
public class Tools {
public static void setImg(String path,JLabel img) {
BufferedImage originalImage;
try {
originalImage = ImageIO.read(new File(path));
ImageIcon icon = new ImageIcon(originalImage);
int labelWidth = img.getWidth();
int labelHeight = img.getHeight();
if (labelWidth > 0 && labelHeight > 0) {
icon.setImage(icon.getImage().getScaledInstance(labelWidth, labelHeight, Image.SCALE_SMOOTH));
img.setIcon(icon);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
上面实现原理,通过标签图片来对,图片比例进行压缩与裁剪