我正在尝试将代码中已定义的图像添加到 JLabel,但仅限于单击按钮时。
目前,我定义的图标如下:
public class Lights extends JPanel implements ActionListener
{
public Lights()
{
//Dimmable light icons
ImageIcon dimmable0 = createImageIcon("images/Dimmer0.png");
ImageIcon dimmable1 = createImageIcon("images/Dimmer1.png");
ImageIcon dimmable2 = createImageIcon("images/Dimmer2.png");
ImageIcon dimmable3 = createImageIcon("images/Dimmer3.png");
在这部分设置它们可以很好地使用
kDimLightLabel = new JLabel(dimmable0);
然后,当我实现 ActionListener 时,我有一个按钮可以打开灯,当它打开时,我希望它将图标设置为 dimmable3 图标。目前它处于:
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == kLightOn)
{
if(Lights[0].getlightStatus() == "Off")
{
Lights[0].setlightStatus("On");
kLightOnOffLabel.setText(Lights[0].getlightStatus());
kLights.setValue(3); //sets slider as lights go on or off
dimmableLights[0].setdimLevel(3); //sets array value
kDimLightLabel.setIcon(dimmable3); //sets label image
}
}
当我运行它时,我收到 12 个错误,12 个按钮中的每一个都出现相同的错误!
kDimLightLabel.setIcon(dimmable3);//设置标签图像 ^ 符号: 可调光3 地点:灯光课
任何有关如何以正确方式设置图标的帮助将不胜感激!
谢谢!
最佳答案
您的代码会建议变量 dimmable3
仅在构造函数 Lights
的范围内可用。尝试使所有 ImageIcon
变量在类级别可用。
public class Lights extends JPanel implements ActionListener {
private ImageIcon dimmable0; // initialize in constructor
...
public Lights() {
dimmable0 = createImageIcon(...);
...
除此之外,这看起来很可疑:
if (Lights[0].getlightStatus() == "Off")
建议您为每个 Lights
实例使用静态 getlightStatus
方法。使用非静态方法将确保每个实例都可以拥有自己的lightStatus
。还可以使用 String#equals
来比较 String
内容。 ==
运算符用于比较 Object
引用,通常不是您想要的。
关于java - 单击按钮时将图标添加到 ActionListener 中的 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815603/