2016-10-07 4 views
2

Я хотел бы узнать, когда щелкнуто меню боковой панели или меню гамбургера.Слушайте меню со стороны меню/меню гамбургера, щелкнув событие

Вот код из Barebone привет мир проекта, который не работает:

Form hi = new Form("Hi World"); 
    Toolbar bar = new Toolbar(); 
    hi.setToolbar(bar); 
    bar.addCommandToSideMenu(new Command("test 1")); 
    bar.addCommandToSideMenu(new Command("test 2")); 
    hi.addComponent(new Label("Hi World")); 

    bar.getMenuBar().addPointerPressedListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent evt) { 
      System.out.println("Side menu or Hamburner Menu is clicked"); 
     } 
    }); 
    hi.show(); 

я ожидал, когда я нажимаю на боковое меню или меню гамбургер, чтобы увидеть строку печати. Но это было не так.

Как я могу прослушать событие с нажатием кнопки гамбургера.

Спасибо,

3lix

ответ

1

Другой подход, чтобы отключить значок меню и просто добавить кнопку себя, как мы делали в этом шаблоне: http://www.codenameone.com/blog/template-mobile-material-screens-ui-kit.html

+0

Я вижу! Это очень интересный подход! Спасибо за помощь. Я думаю, что ваш ответ решает проблему – 3lix

2

Поскольку панель инструментов просто BorderLayout контейнер на верхней части формы, вы можете найти кнопку бокового меню и добавить слушателя на него.

Button sideBtn = (Button)((BorderLayout)bar.getLayout()).getEast(); 

Уведомление это недокументированная API, так что это может нарушить в будущем, кнопка сторона не подвергается воздействию с целью по причине, пересмотреть то, что вы пытаетесь сделать.

+0

Ну я не совсем понимаю, почему кнопка сторона не подвергается совсем по назначению. Я не понимаю, почему вы не поддерживали прослушивание для открытия бокового меню через api-вызов. Я бы пересмотрел то, что я пытаюсь сделать, если вы можете направить меня к лучшему подходу. Короче говоря, я пытаюсь закрасить форму закрытия, когда открывается боковое меню, а затем отмените его, когда боковое меню закрывается. Для тонировки/нечистоты я заполняю прямоугольник на стекле. Мой случай не является пробной пробкой любым способом, но мне нравится визуальная подсказка, намекающая, что форма не находится в фокусе. – 3lix

+0

Пожалуйста, дайте мне знать, если у вас есть предложения (лучший подход ко мне), или если вы думаете, что мы можем быть в будущем предоставить API-запрос для этого, если на самом деле вы видите вариант использования, который может понадобиться другим людям. Я хотел бы добавить, что я также обнаруживаю, когда открывается меню, чтобы выделить последний выбранный параметр/команду в боковом меню прямо перед открытием бокового меню. Это два обычных случая использования, которые у меня есть до сих пор. – 3lix

+0

Я думаю, вы имели в виду getWest(). Я не могу получить больше одного события. Это работает в первый раз, но затем перестает работать: Button sideBtn = (кнопка) ((BorderLayout) bar.getLayout()). GetWest(); sideBtn.addActionListener (новый ActionListener() { @Override общественного недействительными actionPerformed (ActionEvent ЭВТ) { System.out.println ("Side меню или Hamburner меню щелкают");} }); Я начал понимать ваши проблемы больше прямо сейчас. Я думаю, что у боковой кнопки есть другие события, связанные с ней, чтобы открыть/закрыть боковое меню. – 3lix

Смежные вопросы