JLabel + 图片
JLabel + images
我正在使用命令 .setIcon()
将图像应用到 JLabel,然后将标签添加到面板
public browser() throws IOException {
JLabel lblimg;
Image img;
ImageIcon ico;
img = ImageIO.read(new File("<FilePath>"));
ico = new ImageIcon(img);
lblimg.setIcon(ico);
lblimg.setBounds(300,90,120,120);
add(lblimg);
}
但这不会调整标签内图像的大小,这样,如果图像大于标签大小,只会显示图像的一部分。
有谁知道将图像插入标签背景并调整图像大小的方法吗?
这是我几年前写的一种方法,用于在 Java 中调整图像大小。
public ImageIcon picturePrep(ImageIcon icon) {
final int DESIRED_WIDTH = 880;
double imageWidth = icon.getIconWidth();
int imageHeight = icon.getIconHeight();
imageWidth = DESIRED_WIDTH/imageWidth;
imageHeight = (int) (imageWidth * imageHeight);
Image img = icon.getImage();
return new ImageIcon(img.getScaledInstance(DESIRED_WIDTH, imageHeight, Image.SCALE_SMOOTH));
}
创建一个BufferedImage并获取缩放后的实例,将其宽高设置为标签的宽高。现在,即使您调整标签的大小,图像也会覆盖标签。
例如:lblimg.setBounds(300, 90, 300, 120);
BufferedImage bimg =ImageIO.read(new File("file path"));
ico = new ImageIcon(bimg.getScaledInstance(lblimg.getWidth(), lblimg.getHeight(), Image.SCALE_SMOOTH));
lblimg.setIcon(ico);
下图已根据标签的宽高进行了缩放。
lblimg.setBounds(300, 90, 100, 50);
使用适当的布局管理器自动为您处理。有关详细信息,请参阅 Laying Out Components Within a Container。
如果出于某种奇怪的原因,您不能使用布局管理器,那么您可能应该考虑基于自定义绘画的解决方案,您可以使用组件首选大小在设置时提供更好的信息这是界限
BufferedImage img = ImageIO.read(new File("<FilePath>"));
JLabel lblimg = new JLabel(new ImageIcon(img));
lblimg.setBounds(new Rectangle(new Point(300, 90), lblimg.getPreferredSize()));
那你就不用猜了
我正在使用命令 .setIcon()
将图像应用到 JLabel,然后将标签添加到面板
public browser() throws IOException {
JLabel lblimg;
Image img;
ImageIcon ico;
img = ImageIO.read(new File("<FilePath>"));
ico = new ImageIcon(img);
lblimg.setIcon(ico);
lblimg.setBounds(300,90,120,120);
add(lblimg);
}
但这不会调整标签内图像的大小,这样,如果图像大于标签大小,只会显示图像的一部分。
有谁知道将图像插入标签背景并调整图像大小的方法吗?
这是我几年前写的一种方法,用于在 Java 中调整图像大小。
public ImageIcon picturePrep(ImageIcon icon) {
final int DESIRED_WIDTH = 880;
double imageWidth = icon.getIconWidth();
int imageHeight = icon.getIconHeight();
imageWidth = DESIRED_WIDTH/imageWidth;
imageHeight = (int) (imageWidth * imageHeight);
Image img = icon.getImage();
return new ImageIcon(img.getScaledInstance(DESIRED_WIDTH, imageHeight, Image.SCALE_SMOOTH));
}
创建一个BufferedImage并获取缩放后的实例,将其宽高设置为标签的宽高。现在,即使您调整标签的大小,图像也会覆盖标签。
例如:lblimg.setBounds(300, 90, 300, 120);
BufferedImage bimg =ImageIO.read(new File("file path"));
ico = new ImageIcon(bimg.getScaledInstance(lblimg.getWidth(), lblimg.getHeight(), Image.SCALE_SMOOTH));
lblimg.setIcon(ico);
下图已根据标签的宽高进行了缩放。
lblimg.setBounds(300, 90, 100, 50);
使用适当的布局管理器自动为您处理。有关详细信息,请参阅 Laying Out Components Within a Container。
如果出于某种奇怪的原因,您不能使用布局管理器,那么您可能应该考虑基于自定义绘画的解决方案,您可以使用组件首选大小在设置时提供更好的信息这是界限
BufferedImage img = ImageIO.read(new File("<FilePath>"));
JLabel lblimg = new JLabel(new ImageIcon(img));
lblimg.setBounds(new Rectangle(new Point(300, 90), lblimg.getPreferredSize()));
那你就不用猜了