我要实现的功能是:当运行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";
}
}
}
调用部分如下:
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";
}
}
}
ExtractPoint extractPoint=new ExtractPoint();
for(int j=0;j <3;j++){
imgIcon[j]=extractPoint.openPic(3)[j];
} 很明显你这是一次一张...
进行循环,所以你要按三次...
外面再套个循环呀
不过,自己写一个不是很麻烦的。
组件可以继承自JComponent,在paintComponent()方法里
把多个图片画上去。至于图片的大小和位置,计算一下,或直接指定。
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; }
}
很垃圾的一段代码..仅供参考 呵呵..
for(int j=0;j<3;j++){
imgIcon[j]=extractPoint.openPic(3)[j];
}
改成这样imgIcon=extractPoint.openPic(3); 就可以一次打开了,开心~~ 奖励下自己 (*^__^*) 嘻嘻……