真在做基于内容的检索系统,现在只不过是处在做界面的阶段,请高手帮忙看看,为什么不能显示图像啊??急死了!! 两个类如下
在线等!!!!请高手解答谢谢
   1.ImgSearch.javaimport 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;
 }
}

解决方案 »

  1.   

    在你的MouseLis类中的mouseClicked方法中 labelexpImg.setIcon(pic); 后面加上repaint();
    因为你的界面更新了所以要repaint一下
    程序如下
    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);
    repaint();

    if(select==3)
    { labelsearchstation.setText("?Searching...."); } }
      

  2.   

    想将图像划分为6块,其中,位于中心的5、6子块与1、2、3、4子块有重叠.  用java怎么能实现呀? 
      

  3.   

    不好意思不知道怎么给分教教我呵呵___一楼的问题已经解决,另外的图像分割又卡了
    想将图像划分为6块,其中,位于中心的5、6子块与1、2、3、4子块有重叠.  用java怎么能实现呀? 
      

  4.   

    问题1
    在浏览器的左边"我的社区"下点击"我未结的帖子",然后....你就明白了
    问题2
    把图片切成小块 ,然后存放到数组里 ,然后按照数组的顺序drawImage(...)
    给你个网址 ,你看看吧
    http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html