为什么不能显示图像??(程序如下)
真在做基于内容的检索系统,现在只不过是处在做界面的阶段,请高手帮忙看看,为什么不能显示图像啊??急死了!! 两个类如下
在线等!!!!请高手解答谢谢
1.ImgSearch.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
public class ImgSearch extends JFrame
{
int num=0;
int expcount=8;//实例图像总数
Icon pic;
JLabel labelchoiceText=new JLabel("请选择示例图像(共四幅)");
JLabel labelexpImg=new JLabel();
JLabel labelsearchstation=new JLabel("搜索需要十几秒钟,请稍候!");
JButton buttonpre=new JButton("上一页");
JButton buttonnext=new JButton("下一页");
JButton buttongo=new JButton("搜索");
String path="E:/me";
public static void main(String args[])
{
ImgSearch frame1=new ImgSearch();
frame1.setTitle("图像检索");
frame1.setSize(660,460);
frame1.setVisible(true);
}
public ImgSearch()
{
getContentPane().setLayout(null);
buttonpre.addMouseListener(new MouseLis(1));
buttonnext.addMouseListener(new MouseLis(2));
buttongo.addMouseListener(new MouseLis(3));
scaleFilter sc=new scaleFilter(path+"00"+"0.jpg");
pic=new ImageIcon(sc.scaleImg());
labelexpImg.setIcon(pic);
getContentPane().add(labelchoiceText);
getContentPane().add(labelexpImg);
getContentPane().add(labelsearchstation);
getContentPane().add(buttonpre);
getContentPane().add(buttonnext);
getContentPane().add(buttongo);
labelchoiceText.setBounds(30,30,400,40);
labelexpImg.setBounds(30,70,400,300);
buttonpre.setBounds(30,380,200,30);
buttonnext.setBounds(230,380,200,30);
buttongo.setBounds(460,100,170,50);
labelsearchstation.setBounds(460,250,170,50);
addWindowListener(new WindowLis());
}
class MouseLis extends MouseAdapter
{
int select;
public MouseLis(int select)
{
this.select=select;
}
public void mouseClicked(MouseEvent e)
{
if((select==1)&&(num>0))
{
num--;
}
if((select==2)&&(num<(expcount-1)))
{
num++;
}
pic=new ImageIcon(path+"00"+num+".jpg");
scaleFilter sc=new scaleFilter(path+"00"+num+".jpg");
pic=new ImageIcon(sc.scaleImg());
labelexpImg.setIcon(pic);
if(select==3)
{
labelsearchstation.setText("正在搜索,请稍候……");
}
}
}
class WindowLis extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
dispose();
}
}
}
2.scaleFilter.java
/*将原图缩微小400*300*/
import java.awt.event.*;
import java.awt.image.*;
import java.awt.*;
import java.util.*;
public class scaleFilter extends Frame{
float ib;
Image im1,im2;
int w,h,ws,hs,imax;
public scaleFilter(String name){
MediaTracker tracker=new MediaTracker(this);
im1=Toolkit.getDefaultToolkit().getImage(name);
tracker.addImage(im1,0);
try{
tracker.waitForAll();
}catch(InterruptedException e){e.printStackTrace();}
w=im1.getWidth(this);
h=im1.getHeight(this);
imax=Math.max(w,h);
if(imax==w)
{
ib=(float)(w)/400;
}
else
{
ib=(float)(h)/300;
}
ws=(int)(w/ib);
hs=(int)(h/ib);
ReplicateScaleFilter filter=new ReplicateScaleFilter(ws,hs);
FilteredImageSource fis=new FilteredImageSource(im1.getSource(),filter);
im2=createImage(fis);
}
public Image scaleImg()
{
return im2;
}
}