java - 调整图片大小以适合 JLabel

标签 java swing jlabel

我正在尝试使图片适合 JLabel。我希望将图片尺寸减小到更适合我的 Swing JPanel 的尺寸。

我尝试使用 setPreferredSize 但它不起作用。

我想知道是否有一种简单的方法可以做到这一点?我应该为此目的缩放图像吗?

最佳答案

大纲

以下是要遵循的步骤。

  • 将图片作为 BufferedImage 读取。
  • 将 BufferedImage 调整为另一个与 JLabel 大小相同的 BufferedImage。
  • 从调整大小的 BufferedImage 创建一个 ImageIcon。

您不必设置 JLabel 的首选大小。将图像缩放到所需大小后,JLabel 将采用 ImageIcon 的大小。

将图片读取为 BufferedImage

BufferedImage img = null;
try {
    img = ImageIO.read(new File("strawberry.jpg"));
} catch (IOException e) {
    e.printStackTrace();
}

调整 BufferedImage 的大小

Image dimg = img.getScaledInstance(label.getWidth(), label.getHeight(),
        Image.SCALE_SMOOTH);

确保标签宽高与原图宽高比例一致。换句话说,如果图片是 600 x 900 像素,则缩放到 100 X 150。否则,您的图片会失真。

创建一个 ImageIcon

ImageIcon imageIcon = new ImageIcon(dimg);

关于java - 调整图片大小以适合 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343098/

相关文章:

Java DNS 缓存查看器

java - 如何找到要在Excel单元格中写入的列名

java - JButton 布局问题

java - 如何将扩展的 jpanel 添加到 jframe

java - JPanels : One with a JTextArea and another with a JLabel

java - 使用 gridbaglayout 按下按钮时无法添加 JLabels

java - JLabel 没有出现

java - 插入排序与希尔排序程序。希尔排序仅在某些时候有效

java - 在同一类的另一个方法中获取我的 Treeset 的结果

java - 图像不会改变,我该如何刷新面板呢?