Java 我如何制作一个JLabel,它有一个可用于所有方法和类的imageIcon?

Java 我如何制作一个JLabel,它有一个可用于所有方法和类的imageIcon?,java,swing,Java,Swing,我希望在JLabel中有一个ImageIcon,我可以从另一个方法更新它。但我无法找到一种方法来创建静态JLabel(以便能够从另一个方法访问它)并将其安装为包含imageIcon的JLabel-除了JLabel label=new JLabel(imgIcon)之外,还有其他方法来创建带有imageIcon的标签吗?尝试使用setIcon方法,但标签未按上面的方式设置,但它给出了空指针异常。非常感谢您的帮助。不要将JLabel设置为静态,而是在其他方法之外定义它,但仍然在您的类中 public

我希望在JLabel中有一个ImageIcon,我可以从另一个方法更新它。但我无法找到一种方法来创建静态JLabel(以便能够从另一个方法访问它)并将其安装为包含imageIcon的JLabel-除了JLabel label=new JLabel(imgIcon)之外,还有其他方法来创建带有imageIcon的标签吗?尝试使用setIcon方法,但标签未按上面的方式设置,但它给出了空指针异常。非常感谢您的帮助。

不要将JLabel设置为静态,而是在其他方法之外定义它,但仍然在您的类中

public class Test {

    private JLabel label = new JLabel(new ImageIcon(/*your icon*/));
}
如果需要从其他类访问它,请创建一个访问器方法:

public JLabel getLabel() {
    return label;
}

当您希望在不创建对象的情况下访问任何类(如
Clazz
)中的静态方法或对象(如
Clazz c=new Clazz();
)时,仅在其中使用静态方法或对象。例如,如果我创建一个静态方法
publicstaticvoidstaticmethod(){}
和一个常规方法
publicstaticvoidregularmethod(){}
,我就是这样访问它们的:

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)必须随时从任何上下文访问它

如果标签是私有创建的,如果它是在任何方法之外创建的,我可以从同一类中的其他方法访问它吗?因为我得到一个错误,告诉我不能从静态上下文引用非静态变量?这是否意味着即使在同一个类中,我也必须使用getlabel(0方法?如果是,我如何使用getlabel()方法?我是否需要创建一个标签来从ie label2=test.getlabel()调用getlabel方法?或者如何访问它以更改标签中的图标?感谢如果希望从同一类中的其他方法访问,请不要将方法设置为静态。但是,如果希望同时从同一类和另一类访问,我该怎么办?getLabel()就是这样做的方法是。您必须创建一个Test实例。我建议您访问www.java-made-easy.com,它提供了一个完美的教程,演示如何正确创建类和类的实例,以便在类之外使用。