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

Java图片显示不了
代码如下:
Java code

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
public class AppPanel extends JPanel {
    //variables and components==========================
    private JPanel imageBox;
    private JPanel toolPane;
    private JLabel counterLabel;
    private int counter;
    private boolean showWholeImage;
    private JButton selectButton;
    private JButton breakButton;
    private JButton viewImageButton;
    private Image[] images;
    private Image wholeImage;
    private JFileChooser chooser;
    //constructor=============================
    public AppPanel(){
        //initial variables
        chooser = new JFileChooser();
        images=new BufferedImage[24];
        wholeImage=null;
        showWholeImage = true;
        counter=0;
        setLayout(new BorderLayout());
        //initial components
        imageBox = new JPanel();
        imageBox.setBackground(Color.WHITE);
        toolPane = new JPanel();
        counterLabel = new JLabel("操作次数:"+counter);
        viewImageButton = new JButton("显示原图");
        selectButton = new JButton("选择图片");
        selectButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                if(JFileChooser.APPROVE_OPTION==chooser.showOpenDialog(null)){
                    try{
                        wholeImage = ImageIO.read(chooser.getSelectedFile());
                        showWholeImage=true;
                        repaint();                        
                    }
                    catch(Exception e){
                        JOptionPane.showMessageDialog(null, "打开文件失败");
                    }
                }
            }
        });
        breakButton = new JButton("打乱图片");
        toolPane.add(counterLabel);
        toolPane.add(selectButton);
        toolPane.add(breakButton);
        toolPane.add(viewImageButton);
        add(toolPane,BorderLayout.SOUTH);
        add(imageBox);
    }
    //paintComponents
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics g2d = imageBox.getGraphics();
        if(showWholeImage && wholeImage!=null){
            g2d.drawImage(wholeImage,0,0,imageBox);
        }
        else{
            int x =0,y=0;
            for(int i=0;i<24;i++){
                g2d.drawImage(images[i],x, y, null);
            }
        }
    }
}

难道不是每次选择图片后,调用repaint直接将图片绘制到imageBox上吗,为什么总是显示不了?

------解决方案--------------------
应该没啥问题啊。jar包用的对不对?
------解决方案--------------------
给楼主顶下
------解决方案--------------------
不知道是不是你图片位置没有放对 我是随便说说的哈
------解决方案--------------------
试了一下,换成JLabel好使。
JLabel lable = new JLabel();
lable.setIcon(new ImageIcon(wholeImage));