日期:2014-05-20  浏览次数:20742 次

读入一张图片到JLabel,不论图片大小如何,都将填满Jabel的矩形空间,这在JAVA里能实现吗??
我现在就碰到这样的问题

------解决方案--------------------
up
------解决方案--------------------
图片不按比例自动填满JLabel?那不同比例的图片岂不是会很难看?

让图片按比例自动缩放去适应JLabel倒是可以。

label.setImage(getImage(new URL("http://...));
------解决方案--------------------
import java.awt.* ;
import javax.swing.* ;
import java.util.* ;

public class Test extends JLabel{
private Image im = null ;

public static void main(String args[]){
JFrame w = new JFrame() ;

w.add(new SQLTest()) ;
w.setSize(200 , 200) ;
w.setLocation(200 , 200) ;

w.setVisible(true) ;
}

public void paint(Graphics g){
if(im==null){
im = Toolkit.getDefaultToolkit().getImage("f:\\bg.jpg") ;
this.setIcon(new ImageIcon("f:\\bg.jpg")) ;
}
g.drawImage(im , 0 , 0 , this.getWidth() , this.getHeight() , this) ;
}
}

这个是我试验出来的一种解决办法,不知道为什么,只重写JLable的Component不起作用,必须要加上setIcon方法,而且里面的参数和要取得的Image还必须一致。但是这个办法可以让图片随着JLabel的大小而改变大小,希望对你有帮助
------解决方案--------------------
你可以把图片缩放至JLabel大小在设置上去
Image image=....

用这个方法得到缩放图片:image.getScaledInstance(int width, int height, int hints)
这里的width height 可以是你的JLabel的width height 
hints 可以设置为Image.SCALE_FAST Image.SCALE_REPLICATE Image.SCALE_SMOOTH