嗯,在项目需要从硬盘读取图片(50张以上,像素大于1024X768)并显示在UI中(Swing).
并且在UI中反复多次的缩放显示.
目前用的是双缓存.
可是效果做出来是好慢.很多时候卡死,没有反应!
现在想找另外一种高效的方法替代.Thanks!

解决方案 »

  1.   


    Thanks !嗯,通道机制不是很了解.请指教!嗯,逻辑是没有问题的!
      

  2.   

    呵呵,换开发环境也许能解决你的问题...Swing本来占用内存就比较大了.
      

  3.   


    嗯,虽然是一个解决方法,可是项目已经到了后期.不可能重新来过的.
    嗯,现在正在为这个头痛着....java swing 痛并快乐着!各位高手有没有好的解决方案呀!明天加分求解!
      

  4.   

    我一般也用的是双缓冲技术,它是在内存中创建的image对象,通道机制没用过
    学习
      

  5.   

    明天加分求解!
    Thanks!
     
      

  6.   

    使用ImageMagick试试
    安装后用java命令行调用
    就行
      

  7.   


    嗯,就是上图片所示的哪样子!通过控制杆来查看大图or小图!缩放的时候很慢,很卡!是从数据库中得到图片路径.再显示在JLabel上的.谢谢楼上的各位了!期待好的解决方案!
      

  8.   

    界面挺漂亮,别用 JLabel 了,拿它显示大图片缩放时肯定快不了,自己绘制图片或写个显示图片缩略图的组件,这样性能能高不少。创建缩略图组件能用到 java.awt.Canvas(用来绘制和显示缩略图)和 java.awt.Image.getScaledInstance(int width, int height, int hints)(用于生成具有一定大小和质量的缩略图)。
      

  9.   

    另外绘制缩略图的漂亮边框能用到 javax.swing.border.Border 接口的 paintBorder(Component c, Graphics g, int x, int y, int width, int height) 方法,具体做法参照:import javax.swing.border.Border;
    import javax.swing.BorderFactory;
    ...
    Border border = BorderFactory.createXxxxBorder(); //Xxxx 表示边框绘制器的样式名称。
    border.paintBorder(yourComponent, yourGraphics, x, y, width, height); //分别指定绘制边框的组件,由组件获得的Graphics,绘制的边框左上角的xy坐标及绘制边框的外缘宽高。
      

  10.   

    如果要使用 ImageMagick 可以在 http://www.imagemagick.org/script/api.php 找到相应的 JavaAPI 接口 jar 包下载地址。不过好像没开始提供下载(参见 http://sourceforge.net/project/stats/detail.php?group_id=218089&ugn=jmagick&type=prdownload)。
      

  11.   

    界面很漂亮!对Java的图形界面多了一点信心1
      

  12.   

    多线程+缓存技术
    JAVA资料太多?选中想收藏的文字(图片),右键选“收录到易载”,搞定!
      

  13.   


    sagezk Thanks!我现在改成用JPanel显示 效果还是不是很明显!假如我用自己写一个图片控件:是继承 javax.swing.JComponent,还是直接继承java.awt.Component呢?实现相关方法!
      

  14.   


    yirentianran Thanks!找了相关的资料!可是没有找到下载的地址,找到的是一些没有提供下载的地址!
      

  15.   

    javax.swing.JComponent 和 java.awt.Component 都可以,继承自 Component 能简单点,要覆盖其中 paint 和 update 方法,将自己的绘图方法放到 paint 里面。
      

  16.   

    同求啊,像加载图片,缩放图片都相当耗CPU啊,特别是大图的时候,体积4M就会卡1秒钟左右。
    虽然是08年的贴。