重画
public void paint(Graphics g)
{
if(this.routeImage!=null)
{
g.drawImage(this.routeImage,0,0,Color.red,this);
}
}
public void paint(Graphics g)
{
if(this.routeImage!=null)
{
g.drawImage(this.routeImage,0,0,Color.red,this);
}
}
解决方案 »
- 高分求救JComboBox下拉树问题(回帖有分)
- 关于静态初始化块(static initialization block)执行先后顺序的一个怪异现象
- 请教超级高手,要怎么样把一张表中的100百万条记录的20万条记录,放到内存里
- 字符串“254”如何转换为16进制的“FE”
- 关于取得java程序的返回值问题。
- 菜鸟发问:不知道是简单还是难,反正自己没搞定~~~~~,帮忙看哈!!谢谢!!最后20分
- 在Linux OS 上运行Java程序
- 问题
- tomcat 运行一段时间后几乎耗尽系统资源
- java新手求大神帮助~~
- 软考部分答案
- 怎样设置才能在创建包的时候的时候自动在工作目录下建立一个包目录???多谢了
Awt被设计为假定图象可能是从缓慢的网络连接上得来的。java创建了一个新的线程来加载该文件,然后在文件实际加载完之前便返回。
在你的paint()中,因为图片尚未加载,所以paint一次次地尝试调用绘制图片,count的增加值由加载的速度决定。可以采用MediaTracker来完成,这是它的典型应用
你的改正代码如下,我调试过了,你看看 :)import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.MediaTracker;
import javax.swing.*;public class InfoPanel extends JPanel
{
private Image img = Toolkit.getDefaultToolkit().getImage(
InfoPanel.class.getResource("DDG51.gif"));
private int count = 0; public InfoPanel()
{
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(img,0);
try
{
tracker.waitForID(0);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
} public void paint(Graphics g){
super.paint(g);
g.drawImage(img,0,0,this.getWidth(),this.getHeight(),this);
count ++;
System.out.println(count);
} public static void main(String[] args){
JFrame f = new JFrame();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setSize(400,200);
InfoPanel info = new InfoPanel();
f.getContentPane().add(info);
f.setVisible(true);
}
}
移动滚动条,都要贴一次图,没做别的事g.drawImage(routeImage,0,0,this);
移动太快的话,它重画的频率也快,paint(g)方法处理不过来,会导致闪烁,
如果我在paint(g)方法里加几条输出语句它会闪烁更严重,和速度有关!!
routeImage是临时绘制的图片对象,不需要加在图片,是缓冲技术但没有缓冲功能
用swing.jar包太大,下在慢!
如果拖动滚动条的话,为什么会出现字在垂直方向上拉长了,导致字变模糊?