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