Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить доступ к перем-ой из actionPerformed 
V
    Опции темы
freshAngel
  Дата 21.7.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Привет.
Проблема заключается в следующем.
Файл Main.java:

Код


public class Main {

public static void main(String[] args) throws IOException, AWTException {

JFrame frame = new JFrame();
frame.setSize(200,300);
frame.setLocationRelativeTo(null);
frame.setVisible(false);
    
Tray trayWindow = new Tray(frame);

}

}


Файл: tray.java

Код

public class Tray{


private SystemTray systemTray = SystemTray.getSystemTray();
TrayIcon trayIcon = new TrayIcon(ImageIO.read(new File("C:\\Patterns\\patchwork1.gif")), "Tray test application");

public Tray(JFrame frame) throws IOException, AWTException
{
   frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

    // Не могу получить доступ к переменной frame

    trayIcon.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        if(!frame.isVisible()) setVisible(true);
        setState(frame.NORMAL);
        systemTray.remove(trayIcon);
      }
    });

   systemTray.add(trayIcon);
} // Constructor

} /// Class
    


Не получается обратиться к переменной frame из actionPerfomed.

PM MAIL   Вверх
jeank
Дата 21.7.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.6.2008
Где: Калининград

Репутация: нет
Всего: 1



 А не должен ли быть frame  - final?

Это сообщение отредактировал(а) jeank - 21.7.2009, 16:04
PM MAIL WWW   Вверх
freshAngel
  Дата 21.7.2009, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Цитата(jeank @ 21.7.2009,  16:03)
А не должен ли быть frame  - final?

Должен наверное  smile 
По крайней мере подсказка в NetBeans тоже что - то про final пишет.
Только вот вопрос! Для чего нужен final!? Почему так не работает!?

Добавлено
Да, с параметром final все заработало.
Спасибо!
Только зачем он нужен и почему без него не работает!?

Это сообщение отредактировал(а) freshAngel - 21.7.2009, 16:17
PM MAIL   Вверх
jeank
Дата 21.7.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.6.2008
Где: Калининград

Репутация: нет
Всего: 1



ну все очень просто - когда ссылка объявляется как финал, это значит, что один раз указав ей на объект нельзя потом вторично указать на другой объект. Т.е. она как бы "прилипает" намертво к объекту, хотя сам объект может меняться как пожелает программист.
Т.о. образом обходят плохие ситуации, когда в листенере используется ссылка, которая в процессе может ссылаться на разные объекты.
PM MAIL WWW   Вверх
freshAngel
  Дата 21.7.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Как познавательно!
Я знал что спецификатор final может использоваться для обозначения констант и отмены наследования, но про "прилипание" не знал.
Спасибо большое! Просветили!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.