powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопросы по JmenuBar и обработка событий
18 сообщений из 18, страница 1 из 1
Вопросы по JmenuBar и обработка событий
    #34107352
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Есть свой файл конфигурации и класс работы с ним. Из файла я беру все имена для елементов меню в виде массивов строк.
И перед мно встал такой вопрос, как в цикле создавать меню, вешать обработчики и как их потом ловить.
Просмотрел исходники с jsdk, но так и не въехал
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34125225
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Походу идей нет, как и у меня
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34125244
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет идей, в чем сложности.
Если вы владеете следующими методиками:
1) Работа с файлами.
2) Создание меню.
3) Обработка события.
то сложностей у вас просто не должно возникнуть. Я не понимаю, в чем проблема.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34125253
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм:
1) Прочли информацию о пункте меню. (из XML, property, просто текстового файла.. неважно, главное, что вы ее прочли)
2) Создали пункт меню.
3) Добавили ему обработчик.
4) Занесли его в меню.

Не правда ли выглядит весьма просто? Так в чем проблема?
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34127126
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу поделиться своим простеньким компонентом, который загружает меня из XML-файла опрелделенной структуры. Глубина уровней не ограничена. Польщуйтесь на здоровье.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128523
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mysterio
Алгоритм:
1) Прочли информацию о пункте меню. (из XML, property, просто текстового файла.. неважно, главное, что вы ее прочли)
2) Создали пункт меню.
3) Добавили ему обработчик.
4) Занесли его в меню.

Это понятно
Я не хочу городить типо этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        JMenu file_menu =  new  JMenu("Файл");
        menu_new_file =  new  JMenuItem("Новый");
        menu_open_file =  new  JMenuItem("Открыть");
        menu_save_file =  new  JMenuItem("Сохранить");
        menu_saveas_file =  new  JMenuItem("Сохранить как ...");
        menu_exit =  new  JMenuItem("Выход");
        menu_new_file.addActionListener( new  JMenuBarL());
        menu_open_file.addActionListener( new  JMenuBarL());
        menu_save_file.addActionListener( new  JMenuBarL());
        menu_saveas_file.addActionListener( new  JMenuBarL());
        menu_exit.addActionListener( new  ToolbarL());
        file_menu.add(menu_new_file);
        file_menu.add(menu_open_file);
        file_menu.add(menu_save_file);
        file_menu.add(menu_saveas_file);
        file_menu.addSeparator();
        file_menu.add(menu_exit)

        JMenuBar menu_bar =  new  JMenuBar();
        menu_bar.add(file_menu);
Потому что меню будет большим.
diablero
вопрос, как в цикле создавать меню, вешать обработчики и как их потом ловить

+Многоязыковая поддержка, поэтому и читаю из файла (файлов)
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128558
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас проблемы с понятием самых основ. Неплохо бы почитать книжку уровня HelloWorld по Java, например, Хорстманна.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
JMenu menu;
JMenuItem item;
JMenuBar menuBar =  new  JMenuBar();

//Допустим вы прочитали файл и создали структуру с описанием пунктов меню.
// Это делать необязательно. Главное - иметь доступ к информации (название меню например)
menu =  new  JMenu(info.getRootName()); //Создали само меню.

 for  (MenuItemInfo mii : info.getItems)  {   //Некая коллекция, содержимым которой является 
  item =   new  JMenuItem(mii.getName());     // информация о пункте меню
  item.addActionListener( new  JMenuItemL());
  menu.add(item);
}

menuBar.add(menu);

Вот что-то такое в первом приближении.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128562
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах да.. если у вас один Listener на все пункты, то лучше его не 10 раз создавать, а один раз создать и добавлять в пункты меню, сэкономите чуточку памяти.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128625
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mysterio я не совсем правильно задал вопрос.
Это все я написал.
У меня встал на самом деле другой вопрос, как ловить события если Item name может быть на разных языках? Как это учесть, чтобы код был не зависем?
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128630
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем понял вопроса.. у вас же все в Unicode, какая разница?
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128668
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спрошу подругому. Как я узнаю что нажали, например "удалить"?
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128696
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
 if  (((JMenuItem) e.getSource()).getText().equals("Удалить")) {
  ...
}
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128731
AlexeyShponarsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда мы обрабатываем событие функция actionPerformed, у него есть паресетер event. Я бы хранил все пункты в списке и делал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  public   void  actionPerformed(ActionEvent event) {
                JMenuItem item =  (JMenuItem) event.getSource();
                 for  ( int  i =  0 ; i < menuItems.size(); i++) {
                     if (menuItems.get(i) == item){
                        //значит для него событие
                    }
                }
}
За синтаксические ошибки не отвечаю, писал вручную.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128740
AlexeyShponarsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нельзя редактировать сообщения и потому отдельным постом.
Удамся к критике к mysterio. Так нельзя делать, зачем нам файл конфигурации, если мы так сравниваем? тоесть если мы захотим изменить название пункта меню, то придеться переписывть программу.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34128745
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А часто ли вы меняете динамически пункты меню в программе?
Это может банально запутать пользователя..

Хотя ваш способ конечно лучше. Другое дело, что я бы вообще на каждое действие повесил свой отдельный слушатель, во-первых его можно связать с другими элементами управления (вспомним про объекты Action), во-вторых такой код гораздо легче изменять, чем копаться в огромнейшем if-е, отвечающем за все меню.
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34130301
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mysterio
Код: plaintext
1.
2.
3.
 if  (((JMenuItem) e.getSource()).getText().equals("Удалить")) {
  ...
}

Это мне не подходит, суть вопроса же не в этом. Как вешать обработчики на элементы верхнего меню, абстрагируясь от его названия(Удалить, Выход и т.д.)

mysterioвспомним про объекты Action
Давайте
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34130359
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой вариант:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
JMenu menu;
JMenuItem item;
JMenuBar menuBar =  new  JMenuBar();

menu =  new  JMenu(info.getRootName()); 

 for  (MenuItemInfo mii : info.getItems)  
{   
  item =   new  JMenuItem(mii.getName());     
  item.addActionListener( new  JMenuItemL());
  menu.add(item);
}
menuBar.add(menu);

 class  JMenuItemL  implements  ActionListener
    {
         public   void  actionPerformed(ActionEvent e)
        {
             if (e.getActionCommand().equals("add"))
            {
                
            }
        }
    }
...
Рейтинг: 0 / 0
Вопросы по JmenuBar и обработка событий
    #34130382
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:)
Вписать строчку забыл, по типу.
item.setActionCommand(mii.getActCom);
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопросы по JmenuBar и обработка событий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]