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

求方法:在指定路径下按照坐标画出图片
准备做个扑克牌游戏,想先把所有的图片都加载进来,
我想在指定位置上画出图片,看了下API,ImageIcon里有个方法,paintIcon(Component, g, x, y);
自己想试一下,结果没有图片
突然发觉自己很多东西不会,
代码如下,欢迎拍砖
Java code

package image;

import javax.swing.*;
import java.awt.*;

public class Image {
    private static ImageIcon CardImage[] = new ImageIcon[58];  // Include four back of card image
    
    /** Get the card image */
    public static void loadImage(){
        for(int i = 0; i < CardImage.length - 4; i++){
            CardImage[i]  = new ImageIcon("card/" + i + ".png");
        }
        
        /** Load the four back of card */
        CardImage[54] = new ImageIcon("card/b1fh.png");
        CardImage[55] = new ImageIcon("card/b1fv.png");
        CardImage[56] = new ImageIcon("card/b2fh.png");
        CardImage[57] = new ImageIcon("card/b2fv.png");
    }
    
    /** Get the array of image label */
    public static ImageIcon[] getImage(){
        return CardImage;
    }
    
    public static void main(String args[]){
        JFrame frame = new JFrame();
        frame.setSize(500, 400);
        frame.setLayout(new GridLayout(1, 1));
        loadImage();
        ImageIcon jlbImage[] = getImage();
        JPanel panel = new Test(jlbImage);
        frame.add(panel);
        
        System.out.println(panel.getWidth());
        System.out.println(panel.getHeight());
        
        
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

class Test extends JPanel{
    public Test(ImageIcon[] imageIcon){
        repaint();
    }
    
    protected void paintComponent(Graphics g, ImageIcon[] imageIcon){
        super.paintComponent(g);
        drawImage(imageIcon, g);
    }
    
    private void drawImage(ImageIcon[] imageIcon, Graphics g){
        int xCoordinate = 0;
        for(int i = 0; i < imageIcon.length; i++){
            JLabel label = new JLabel();
            label.setIcon(imageIcon[i]);
            imageIcon[i].paintIcon(label, g, xCoordinate, 0);
            xCoordinate += 10;
        }
    }
}



------解决方案--------------------
protected void paintComponent(Graphics g, ImageIcon[] imageIcon){

你这个函数,谁来调用?完全没看出来有人去调用它?

你要注意,你修改了参数数量。这可不是 重写,是重载。你不调用就没人调用的。