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

背景图片随窗口大小进行缩放的问题
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class TestJDesktopPane
{
JFrame frame;
JDesktopPane desktopPane;
JLabel backLabel;
ImageIcon  icon;
public TestJDesktopPane()
{
frame = new JFrame("主面板");
desktopPane = new JDesktopPane(); //虚拟桌面
backLabel = new JLabel(); //背景图标
icon = new ImageIcon("e:/Tulips.jpg");
frame.setBounds(0,0,800,600);
backLabel.setIcon(icon);
frame.addComponentListener(new ComponentAdapter(){ //为主面板添加窗口监听器
@Override
public void componentResized(ComponentEvent e)
{
//System.out.println(frame.getWidth());
backLabel.setSize(frame.getWidth(),frame.getHeight());
System.out.println("-----------");
System.out.println(backLabel.getWidth() + "  " +icon.getIconWidth());
}
});
desktopPane.add(backLabel,new Integer(Integer.MIN_VALUE));
frame.add(desktopPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}

public static void main(String[] args)
{
new TestJDesktopPane();
}
}


对于JLabel背景图标的问题,该添加的监听器也做了,可图片就是不能自动缩放,求解释!!!(背景重绘的不需要)

------解决方案--------------------
JLabel是一个容器,其功能只是显示这张图片。
如果要图片尺寸改变,那么显示的本身就不是原图,而是做了修改后的图。那么就应该都这样图片的流然后按比例输出,背景重绘就是实现的这个功能,而该这功能你没添加。