CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  GUI 设计

Panel中更新图片的问题

楼主BeShrek(今晚打老虎)2006-02-11 23:21:11 在 Java / GUI 设计 提问

我重载了JPanel类,重写了paintComponent方法在其中显示一张图片。  
   
  第一次显示图片没有问题。  
   
  但是当改变了图片的内容后,界面上无法更新,显示的还是第一次的图片。  
  请问这是什么原因?  
   
  谢谢。 问题点数:100、回复次数:11Top

1 楼milkbottle(奶瓶->好好学习,天天向上)回复于 2006-02-11 23:52:53 得分 20

JPanel.repaint();   有没有调用?Top

2 楼aaa2003gf(珍惜 (MSN:aaa2003gf@hotmail.com))回复于 2006-02-12 00:05:56 得分 20

你在换图片后updateUI()   一下试试Top

3 楼BeShrek(今晚打老虎)回复于 2006-02-12 00:14:22 得分 0

调repaint()了Top

4 楼BeShrek(今晚打老虎)回复于 2006-02-12 00:25:33 得分 0

Class   ChartPanel   extends   JPanel   {  
   
                    ....  
                    ....  
   
  public   void   paintComponent(Graphics   g)   {  
  System.out.println("###   paint   start");  
   
  super.paintComponent(g);  
   
  g.drawImage(chartImage,   0,   0,   this);  
  System.out.println("###   paint   end");  
  }  
                    ....  
                    ....  
   
  }  
  这是重写的JPanel的paintComponent()方法。  
   
  图片更新后,这个方法确实被自动调用了,但是界面上没有反应。   -________-bTop

5 楼milkbottle(奶瓶->好好学习,天天向上)回复于 2006-02-12 00:31:03 得分 30

this.invalidate();  
  this.validate();    
  一下试试Top

6 楼BeShrek(今晚打老虎)回复于 2006-02-12 00:42:40 得分 0

还是无效。  
   
  public   class   FluxPanel   extends   JPanel   {  
   
  FluxChart   fluxChart   =   null;  
   
  static   double[][]   data;  
   
  String   chartFileName   =   "c:\\chart.jpg";  
   
  private   int   width   =   400;  
   
  private   int   height   =   200;  
   
  Image   chartImage   =   null;  
   
  public   FluxPanel(double[][]   XYData)   {  
  this.data   =   XYData;  
  setOpaque(true);  
  refresh();  
  }  
   
  public   FluxPanel()   {  
  setOpaque(true);  
  refresh();  
  }  
   
  public   void   refresh(){  
  //生成流量图  
  fluxChart   =   new   FluxChart(data,   width,   height,   chartFileName);  
  try   {  
  fluxChart.saveChart();  
  }   catch   (Exception   e)   {  
  System.out.println("生成图表失败");  
  }  
   
  chartImage   =   null;  
  chartImage   =   Toolkit.getDefaultToolkit().getImage(chartFileName);  
  }  
   
  public   void   paintComponent(Graphics   g)   {  
  System.out.println("###   paint   start");  
   
  super.paintComponent(g);  
   
  g.drawImage(chartImage,   0,   0,   this);  
  System.out.println("###   paint   end");  
  }  
   
  public   void   setXYData(double[][]   XYData){  
  this.data   =   XYData;  
  }  
  }  
   
  上面是该类的全部代码。  
   
  更新图片后调用:  
   
  panel.setXYData(myData);  
  panel.refresh();  
  panel.repaint();  
  this.repaint();   //Frame的repaint()  
   
  跟踪代码后发现,图片确实变了,paintComponent()也确实被调用了,  
  但就是界面上没有反应。Top

7 楼BeShrek(今晚打老虎)回复于 2006-02-12 00:44:25 得分 0

上面有一句说错了,是调用refresh()方法更新图片。Top

8 楼mixianger(米香儿)回复于 2006-02-13 13:47:55 得分 30

建议这么写:  
        panel.removeAll();  
        panel.repaint();  
        panel.validate();  
  我这么做是好用的。你试试。  
  Top

9 楼BeShrek(今晚打老虎)回复于 2006-02-15 20:39:57 得分 0

好的,我回去试试  
  两天之内结贴Top

10 楼BeShrek(今晚打老虎)回复于 2006-02-16 09:36:13 得分 0

上面的方法还是不行,removeAll()方法无效~Top

11 楼BeShrek(今晚打老虎)回复于 2006-02-17 20:36:06 得分 0

还是没解决,结贴了,谢谢各位Top

相关问题

  • 如何实现数据库中图片的更新?紧急!!!!
  • 如何更新数据库中的图片?
  • 怎样在javascript中动态更新button的背景图片
  • 如何在更新数据库时更新带有图片类型的字段,焦急等待中。
  • 一个图片动态更新程序!
  • 怎么实现产品图片更新?
  • 动态更新图片内容
  • 如何将DataGrid中EditColumn产生的单调的修改、更新按钮换成图片?
  • !!!请问 我想在页面上,每天自动更新一张图片,从数据库中提取图片链接!如何处理!
  • DataWindow中的更新

关键词

  • 界面
  • null
  • chartimage
  • fluxchart
  • paintcomponent
  • xydata
  • 图片
  • 调用
  • chartfilename
  • fluxpanel

得分解答快速导航

  • 帖主:BeShrek
  • milkbottle
  • aaa2003gf
  • milkbottle
  • mixianger

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo