如何创建一个具有可用于所有方法和类的imageIcon的JLabel?

时间:2009-08-06 22:49:38

标签: java swing

我希望在JLabel中有一个ImageIcon,我可以从另一个方法更新。但是我无法找到一种能够创建静态JLabel的方法(以便能够从另一种方法中获取它)并将其作为包含imageIcon的Jlabel实现 - 除了JLabel标签之外还有另一种方法吗? = new JLabel(imgIcon)用imageIcon创建标签?尝试使用setIcon方法,而不像上面那样对标签进行实例化,但它给出了一个空指针异常。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

不要让JLabel静态 - 而是在其他方法之外定义它,但仍然在你的类中。

public class Test {

    private JLabel label = new JLabel(new ImageIcon(/*your icon*/));
}

如果您需要从其他类访问它,请创建一个存取方法:

public JLabel getLabel() {
    return label;
}

答案 1 :(得分:0)

只有在想要访问它们而不创建对象(如Clazz)时才在任何类(如Clazz c = new Clazz();)中使用静态方法或对象。例如,如果我创建一个静态方法public static void staticMethod() {}和一个常规方法public void regularMethod() {},这就是我访问它们的方式:

public class Clazz //A class with methods
{
  public void regularMethod()
  {
    //Do something local
  }

  public static void staticMethod()
  {
    //Do something static
  }
}

public class Main //The main class with the main method.
{
  public static void main(String[] args)
  {
    Clazz.staticMethod();

    Clazz c = new Clazz();

    c.regularMethod();
  }
}

请注意,我没有致电Clazz.regularMethod();,因为那是不可能的。我没有打电话给c.staticMethod();,因为这种情况很糟糕,即使有可能。

总而言之,尽量不要使用静态对象,除非(A)绝对必要,或者(B)必须随时从任何上下文访问