【问题标题】:Adding icon to JLabel in ActionListener on button click在按钮单击时将图标添加到 ActionListener 中的 JLabel
【发布时间】:2013-04-04 15:35:20
【问题描述】:

我正在尝试将已在我的代码中定义的图像添加到 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 地点:灯光类

任何有关如何以正确方式设置图标的帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: java swing jbutton jlabel imageicon


    【解决方案1】:

    您的代码会建议变量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 引用,通常不是您想要的。

    【讨论】:

    • 非常感谢!只是因为它没有在类级别声明!至于第二个位,我会改变它并拍摄,看看效果如何!不过非常感谢! :)
    猜你喜欢
    • 2019-06-24
    • 2016-06-09
    • 2017-04-07
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多