为什么不能显示图像??(程序如下)

oukatu81 2008-08-22 04:18:04
真在做基于内容的检索系统,现在只不过是处在做界面的阶段,请高手帮忙看看,为什么不能显示图像啊??急死了!! 两个类如下
在线等!!!!请高手解答谢谢
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;
}
}
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oukatu81 2008-08-23
  • 打赏
  • 举报
回复
想将图像划分为6块,其中,位于中心的5、6子块与1、2、3、4子块有重叠. 用java怎么能实现呀?
oukatu81 2008-08-23
  • 打赏
  • 举报
回复
谢谢啦,结贴了.
pzy123cn 2008-08-23
  • 打赏
  • 举报
回复
问题1
在浏览器的左边"我的社区"下点击"我未结的帖子",然后....你就明白了
问题2
把图片切成小块 ,然后存放到数组里 ,然后按照数组的顺序drawImage(...)
给你个网址 ,你看看吧
http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html
oukatu81 2008-08-23
  • 打赏
  • 举报
回复
不好意思不知道怎么给分教教我呵呵___一楼的问题已经解决,另外的图像分割又卡了
想将图像划分为6块,其中,位于中心的5、6子块与1、2、3、4子块有重叠. 用java怎么能实现呀?
pzy123cn 2008-08-22
  • 打赏
  • 举报
回复
在你的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....");

}

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧