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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с событиями 
:(
    Опции темы
batigoal
Дата 18.3.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Начал разбираться со Swing. Возник такой вопрос:

в главной программе есть создается JFrame, к нему подсоединяется меню (в методе main). Как отловить событие меню в главной программе? В сановских примерах события отлавливаются самим классом меню, а как сделать это снаружи? Была мысль сделать так, чтобы главный класс реализовывал ActionListener и передавать ссылку на него в конструктор менюшки, но так как метод main - статический, то передавать this нельзя.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
DarkDS
Дата 18.3.2005, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У каждому пункту меню можно добвить акшинлистенер (метод addActionListener)

PM MAIL   Вверх
batigoal
Дата 18.3.2005, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Да, но что в него передать?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Domestic Cat
Дата 18.3.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Oбъект класса, наследующего от интерфейса ActionListener.


--------------------

PM   Вверх
batigoal
Дата 18.3.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Вот пример кода:
Код

public class FileManager
{
    public static void main(String[] args)
    {
        final JFrame frame = new JFrame("FileManager");
        final Menu menu = new Menu();    // наследуется от JMenuBar
        frame.setJMenuBar(menu);
  }
}

Даже если класс FileManager будет реализовывать интерфейс xxxListener, мы не можем передать ссылку this в конструктор Menu(); потому что метод main - статический. Видимо, мне нужно так изменить код, чтобы все это происходило вне статического метода?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Domestic Cat
Дата 18.3.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Лучшe всего в main такими делами нe заниматься. Нo никтo нe запрещаеt, конечнo:
Код

public class FileManager implements ActionListener
{
    public static void main(String[] args)
    {
        final JFrame frame = new JFrame("FileManager");
        final Menu menu = new Menu();    // наследуется от JMenuBar
        frame.setJMenuBar(menu);
        ... addActionListener(new FileManager());
  }
   
   public void actionPerformed(ActionEvent ae)
   {  /* .... */ }
}


Можно и так
Код

public class FileManager
{
    public static void main(String[] args)
    {
        final JFrame frame = new JFrame("FileManager");
        final Menu menu = new Menu();    // наследуется от JMenuBar
        frame.setJMenuBar(menu);
        ... addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ae)
                {  /* .... */ }
       });
  }
   
   
}




--------------------

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

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

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


 




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


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

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