Как мне сделать JLabel с imageIcon, который доступен для всех методов и классов? - PullRequest
0 голосов
/ 07 августа 2009

Я хочу иметь ImageIcon в JLabel, который я смогу обновить из другого метода. Но я не могу найти способ создать статический JLabel (чтобы можно было получить доступ к нему из другого метода), а также представить его как Jlabel, содержащий imageIcon - есть ли другой метод, отличный от метки JLabel = новый JLabel (imgIcon) для создания метки с imageIcon? попытался использовать метод setIcon без указания метки, как указано выше, но он дал исключение нулевого указателя. Спасибо заранее за любую помощь.

Ответы [ 2 ]

1 голос
/ 07 августа 2009

Не делайте JLabel статичным - вместо этого определите его вне других методов, но все еще в вашем классе.

public class Test {

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

Если вам нужен доступ к нему из другого класса, создайте метод доступа:

public JLabel getLabel() {
    return label;
}
0 голосов
/ 04 февраля 2012

Используйте статические методы или объекты в любом классе (например, 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) должен быть доступен в любое время из любого контекста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...