首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改ImageIcon

更改ImageIcon
EN

Stack Overflow用户
提问于 2015-11-03 11:52:50
回答 1查看 470关注 0票数 0

我有两个问题:

  1. 我正在创建一个简单的内存游戏,可以保存随机序列,并期望播放器提供相同的输入,并且我试图在使用JButton时单击到更亮版本的img1时更改一个setIcon(),但是在运行期间没有任何变化。 私有JButton btnImg1 =新JButton("");ImageIcon img1 =新ImageIcon (“C:\User\vide\Desktop\img1.png”);ImageIcon img1_b =新JButton尝试{ btnImg1.setIcon(img1);Thread.sleep(2000年);btnImg1.setIcon(img1_b);}
  2. 我制作了两个int Lists来保存输入和随机序列,这是动态大小的原因: 列表seqAlea =新的ArrayList();列表seqInsere =新的ArrayList();int placar = 0;geraNumero =新的ArrayList();公开的comecaJogo(){ for(int i= 0;i< 3;i++){ int数字= geraNumero.nextInt(4) + 1;seqAlea.add(i,数字);}}

有更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 12:45:09

首先,不要在主线程中使用睡眠,如果您不打算阻止它,这将使您的应用程序等待睡眠结束,从而“阻塞”您的主线程。

  1. 对于第一个问题,此代码将解决以下问题: //假设您的图像将位于您的包最终URL资源= getClass().getResource("/com/mypackage/myimage.png");final JButton btn =新JButton("My Button");最终图像图像=ImageIO.read(资源);最终ImageIcon defaultIcon =新ImageIcon(图像);btn.setIcon(defaultIcon);Btn.addActionListener(新ActionListener() ){ public ActionListener actionPerformed(ActionEvent e) { try { //这将使您的图像变亮( Graphics2D g2 = (Graphics2D) image.getGraphics();//这里我们正在创建一个具有50% alpha透明度的白色g2.setColor(新颜色( 255,255,255,50));//用新的颜色g2填充整个图像( 0,0,defaultIcon.getIconWidth(),defaultIcon.getIconHeight());g2.disd();btnBtn.setIcon(新的ImageIcon(图像));} catch (异常ex) { /*Although --这是一个糟糕的实践,我这里的要点不是*解释异常。*但这是一个很好的做法,总是捕获尽可能多的异常( */ } });
  2. 实际上,您不需要说明添加元素的位置,特别是如果是序列的话。Arraylist不对项目排序。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33498455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档