我要实现的功能是:当运行test程序后(程序在附件里面),点击“打开”按钮,同时选中3张图片后,点击“打开”按钮,一次打开3张图片到label里面,但下面的程序只能是同时选中3张图片时,要按下“开始”按钮3次才能打开3张图片到label里面。该怎么解决?期待高手指点!!在线等~~~
调用部分如下:
        ImageIcon[] imgIcon=new ImageIcon[3]; 
        ExtractPoint extractPoint=new ExtractPoint();        
                for(int j=0;j<3;j++){
            imgIcon[j]=extractPoint.openPic(3)[j];            
        }
        this.jLabel1.setIcon(imgIcon[0]);
        this.jLabel2.setIcon(imgIcon[1]);
        this.jLabel3.setIcon(imgIcon[2]);被调用的类是:
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.net.InetAddress.*;
/**
 *
 * @author Administrator
 */
public class ExtractPoint {    
    private JFileChooser fileChooser=new javax.swing.JFileChooser(javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory());
    private int[] mouseClickInPic=new int[3];//标志是否发生取点动作
    static String[] filePath={"","",""};
    public ExtractPoint(){
    fileChooser.addChoosableFileFilter(new PicFilter());
    if(!fileChooser.isMultiSelectionEnabled()){
            fileChooser.setMultiSelectionEnabled(true);
        }  
    }
    public ImageIcon[] openPic(int n){ 
        String fileCurrentPath=null;
        String picPath=null;
        String [] imgName={"","",""};
        Image[] img=new Image[n];
        ImageIcon[] imgIcon=new ImageIcon[n];
        try{               
            if (fileChooser.showOpenDialog(fileChooser)!=JFileChooser.APPROVE_OPTION)    {       }
            else{  
                    File fileCurrentDir=fileChooser.getCurrentDirectory();                
                    fileCurrentPath=fileCurrentDir.getPath();                    
                    fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
                    File[] selectFiles=fileChooser.getSelectedFiles();
                    int fileNumber=selectFiles.length;                    
                    if(fileNumber!=n){
                        System.out.println("You haven't choose "+n+" file!");
                        JOptionPane.showMessageDialog(fileChooser, "Please choose "+n+" pictures","Message",JOptionPane.INFORMATION_MESSAGE);
                    }else{                        
                        for(int i=0;i<fileNumber;i++){                         
                            filePath[i]=selectFiles[i].getPath();                        
                            System.out.println("filePath"+i+"=="+filePath[i]); 
                            imgName[i]=selectFiles[i].getName();//get the picture's name
                            System.out.println("filename"+i+"== "+imgName[i]);
                            img[i]=Toolkit.getDefaultToolkit().getImage(filePath[i]);                           
                            img[i]=img[i].getScaledInstance(640, 480, java.awt.Image.SCALE_DEFAULT);                           
                            imgIcon[i]=new ImageIcon(img[i]);
                       } 
                    }
              }           
        }catch (Exception e){System.out.println(e);} 
      return imgIcon;
    }     
    public  class PicFilter extends javax.swing.filechooser.FileFilter{
        boolean flag;  
        public boolean accept(File f) {     
            if(f.getName().toLowerCase().endsWith(".gif")||f.getName().toLowerCase().endsWith(".GIF")||
                    f.getName().toLowerCase().endsWith(".jpg")||f.getName().toLowerCase().endsWith(".JPG")||
                    f.getName().toLowerCase().endsWith(".jpeg")||f.getName().toLowerCase().endsWith(".JPEG")){
                flag=true;                
            }else if(f.isDirectory()){
                flag=true;
            }else{
                flag=false;
            }
            return flag;
        }        public String getDescription() {           
            return ".gif .jpg .jpeg fromats";
        }
        
    }                    
           
}

解决方案 »

  1.   

    写一个方法..返回值是一个容器类..把你的三个小图片url 放到这个容器里面就好了.
      

  2.   

    代码写错了 ....
     ExtractPoint extractPoint=new ExtractPoint();        
                    for(int j=0;j <3;j++){ 
                imgIcon[j]=extractPoint.openPic(3)[j];            
            } 很明显你这是一次一张...
    进行循环,所以你要按三次...
    外面再套个循环呀
      

  3.   

    谢谢cydp007 但是可以说的更详细点么 俺是新手 不好意思
      

  4.   

    java标准类库中并没有一次可以显示多张图片的组件。
    不过,自己写一个不是很麻烦的。
    组件可以继承自JComponent,在paintComponent()方法里
    把多个图片画上去。至于图片的大小和位置,计算一下,或直接指定。
      

  5.   

    对了 我这个是在netbeans下做的 所以调用部分是OpenFile按钮的鼠标单击时间里面的内容,具体附件test里面有
      

  6.   

    import java.util.ArrayList;public class Test {
    ArrayList<String> array = new ArrayList<String>(); public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test test = new Test();
    String string1 = new String("1");
    String string2 = new String("2");
    String string3 = new String("3");
    System.out.println(test.returnTest(string1, string2, string3));
    } ArrayList<String> returnTest(String a, String b, String c) {
    array.add(a);
    array.add(b);
    array.add(c);
    return array; }
    }
    很垃圾的一段代码..仅供参考  呵呵..
      

  7.   

    问题解决了 我之前调用这样写:
    for(int j=0;j<3;j++){
                imgIcon[j]=extractPoint.openPic(3)[j];            
            }
     
    改成这样imgIcon=extractPoint.openPic(3);  就可以一次打开了,开心~~ 奖励下自己 (*^__^*) 嘻嘻……