Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式自动更改图像图标[Java]_Java_Swing_Jbutton_Jlabel_Imageicon - Fatal编程技术网

以编程方式自动更改图像图标[Java]

以编程方式自动更改图像图标[Java],java,swing,jbutton,jlabel,imageicon,Java,Swing,Jbutton,Jlabel,Imageicon,我现在正在做一个简单的游戏。单击JButton时,JLabel的ImageIcon应该会更改。如何实现这一点?简单,只需通过按钮的操作侦听器在JLabel上快速运行setIcon即可 例如: if ("burp".equals(evt.getActionCommand())) { charLabel.setIcon(burpIcon); Sounds.burp(); } 正如MadProgrammer所提到的,您看到setIcon的实时更改时遇到的任何问

我现在正在做一个简单的游戏。单击JButton时,JLabel的ImageIcon应该会更改。如何实现这一点?

简单,只需通过按钮的操作侦听器在JLabel上快速运行setIcon即可

例如:

  if ("burp".equals(evt.getActionCommand())) {
        charLabel.setIcon(burpIcon);
        Sounds.burp();
  }

正如MadProgrammer所提到的,您看到setIcon的实时更改时遇到的任何问题都可能需要了解您是如何实际设计该类的,而不是尝试一种黑客解决方法来强制ImageIcon在正确的设置下正常工作

你应该在这里发布相关代码。JLabel@setIcon? 查看更多信息details@MadProgrammer我已经看过那些教程了。现在我已经设置了一个图像图标,在应用程序运行时如何更改它?对不起,什么?您可以在想要更改JLabel的实例上调用setIcon…避免使用空布局,像素完美布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计初衷是与布局管理器一起工作,丢弃这些布局管理器将导致无止境的问题,您将花费越来越多的时间来纠正这些问题。有关更多详细信息,请参见1-如果您需要在更改JLabel的图标或文本后调用重新验证和重新绘制,则说明您的程序有问题,这些是绑定属性,应触发其自身的更新。2-由于OP使用的是空布局,因此调用revalidate毫无意义,因为它会触发布局管理器中的更改…啊,你是对的。setIcon不应该有这个问题。也许值得冲洗一下?因为OP甚至还没有尝试过,我怀疑这有问题,你不需要在你的例子中打这些电话;谢谢,代码是有效的。但是,即使我把charLabel.setIconburpIcon;播放打嗝噪音的before Sounds.burp在播放声音的过程中有延迟。您确定您的声音文件在开始时没有静音吗?