java jlabel 大小_java - jlabel上的图标获取jlabel的大小 - 堆栈内存溢出

可能是你的LayoutManger /缺少那些干扰,因为JLabel应该根据显示的内容返回正确的大小。

请发布SSCCE以显示具体问题。

虽然无论大图像仍然需要缩放,但这是我通常使用的一种很好的方法:

public static BufferedImage scaleImage(int w, int h, BufferedImage img) throws Exception {

BufferedImage bi;

bi = new BufferedImage(w, h, BufferedImage.TRANSLUCENT);

Graphics2D g2d = (Graphics2D) bi.createGraphics();

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));

g2d.drawImage(img, 0, 0, w, h, null);

g2d.dispose();

return bi;

}

这是一个例子:

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9KaU1rUC5wbmc=

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.image.BufferedImage;

import java.net.URL;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.SwingUtilities;

public class Test {

public Test() {

initComponents();

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

new Test();

}

});

}

private void initComponents() {

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

BufferedImage img = null;

try {

BufferedImage tmp = ImageIO.read(new URL("http://photos.appleinsider.com/12.08.30-Java.jpg"));

img = scaleImage(200, 200, tmp);

} catch (Exception ex) {

ex.printStackTrace();

}

JLabel label = new JLabel(new ImageIcon((Image) img));

frame.add(label);

frame.pack();

frame.setVisible(true);

}

public static BufferedImage scaleImage(int w, int h, BufferedImage img) throws Exception {

BufferedImage bi;

bi = new BufferedImage(w, h, BufferedImage.TRANSLUCENT);

Graphics2D g2d = (Graphics2D) bi.createGraphics();

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));

g2d.drawImage(img, 0, 0, w, h, null);

g2d.dispose();

return bi;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值