java - 单击按钮时将图标添加到 ActionListener 中的 JLabel

标签 java swing jbutton jlabel imageicon

我正在尝试将代码中已定义的图像添加到 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/

相关文章:

java - Jnlp:未验证

java - 如何参数化字符串并替换参数

java - 设置 swing JSlider 和 JTextField 的勾选行为

java - 按钮是_armed_是什么意思?

java - 将 Hibernate 3.1 升级到 3.6 以获得性能提升

java - 如何将xml反序列化为axis2生成的java对象

java - 使用玻璃 Pane 时,鼠标调整光标大小不起作用

Java气泡图自适应文字大小

java - 制作一个将绘图添加到 JFrame 的按钮

java - 如何根据 JButton 的大小自动增加或减少 JButton 文本的大小?