java ( ) 无效_Java里repaint()会无效??

我作了个程序,在一个jpanel里显示一个图标阵列,一共有14种图标,一般显示16*16=256个图标,这些图标按矩形排列,我通过重写paintComponent()来显示这些图标。当发生鼠标事件的时候,...

我作了个程序,在一个jpanel里显示一个图标阵列,一共有14种图标,一般显示16*16=256个图标,这些图标按矩形排列,我通过重写paintComponent()来显示这些图标。当发生鼠标事件的时候,我会改变这些图标(即在鼠标拖动出的矩形位置显示另一种图标)。我另外写里一个setScale(int scale)方法,该方法根据scale的大小来调整窗口的大小和图标的大小,同时执行repaint();

结果出现里灵异事件:

我调用setcale的时候,窗口确实改变了,但大约有50%的机会,里面的图标不能完全显示,一些图标显示为空白,如果这时把这个窗口覆盖一下,然后又看到这些空白又变回图标了;每次出现这种现象时,这些空白的位置不固定,随机的。

请问如何解决?

我的paintompont():

public void paintComponent(Graphics g) {

super.paintComponent(g);

int px=0;int py=0;

int ix,iy;

Image img;

for (ix=0;ix

py=0;

for(iy=0;iy

if (Cases[ix][iy].IsBright()){

img=BoxPro.ST_IMG[Cases[ix][iy].state()].img2[Scale];

g.drawImage(img, px, py,imgW,imgH , null);

}else{

img=BoxPro.ST_IMG[Cases[ix][iy].state()].img[Scale];

g.drawImage(img, px, py,imgW,imgH ,null);

}

py+=imgH;

}

px+=imgW;

}

}

其中,Cases〔〕〔〕是后台数据,保存里那些地方显示什么图标的信息;BoxPro.ST_IMG是一个数组,里面很多图标。

在鼠标事件里我都用repaint()。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值