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

java swing 图片输出
Java code

package com.hello.model;

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

public class NewImage {

    public static void main(String[] args) throws IOException 
    {
        JFrame frame = new JFrame();
        Image image = new ImageIcon("icon/baidu2.gif").getImage().getScaledInstance(33, -1, Image.SCALE_DEFAULT);
        MyPanel canvas = new MyPanel(image);
        
        frame.add(new JScrollPane(canvas));
        frame.pack();
        frame.setVisible(true);    
    }

}

class MyPanel extends JPanel
{
    Image image ;
    final int ICON_WIDTH = 23;
    final int ICON_HEIGHT = 22;
    
    public MyPanel(Image image)
    {
        this.image = image;
    }
    public void paint(Graphics g)
    {
        g.drawImage( new ImageIcon("icon/baidu2.gif").getImage().getScaledInstance(33, -1, Image.SCALE_DEFAULT),(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null);// 1  这样写不会有图片输出

        //g.drawImage(image),(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null); //2  可以输出图片
    }
}





我郁闷了,这两处完全是等价啊。。。。

------解决方案--------------------
有能用的就用好使的呗 你要解决什么问题
------解决方案--------------------
问题出在getScaledInstance上,把这个函数使用去掉,就可以显示图像了; 但我也没弄明白为啥getScaledInstance函数调用返回的不显示