2016-05-11 2 views
0

У меня есть jTextField с кнопкой рядом, чтобы вызвать popupmenu. В popupmenu содержится список стандартного текста для jTextField. Этот список хранится в массиве списка переменной длины, так как он может быть добавлен в другое место в программе.jpopupmenu, где добавить слушателя

Я использую следующее для создания popupmenu.

for(i=0;i<=menuArray1.size()-1;i++){ 
     JMenuItem item = new JMenuItem((String) menujlArray1.get(i)); 
     jPopupMenu1.add(item); 
    } 

Мой вопрос, как я могу включить слушателя, который улавливает, какой пункт в контекстном меню выбирается таким образом, я могу затем поместить значение в JTextField.

ответ

0

Вам необходимо добавить интерфейс ItemListener. Если ваш JMenuItem реализует интерфейс ItemSelectable. Вы можете изменить свой код, чтобы быть, как показано ниже:

ItemListener il = 
    e -> {JMenuItem source = (JMenuItem)(e.getSource()); 
    String s = "Item event detected on '" + source.getText() +",New state: " 
       + ((e.getStateChange() == ItemEvent.SELECTED) ? 
       "selected":"unselected"); 
    jTextField.setText(s); 
}; 

for(i=0;i<=menuArray1.size()-1;i++){ 
    JMenuItem item = new JMenuItem((String) menujlArray1.get(i)); 
    jPopupMenu1.add(item); 
    item.addItemListener(il); 
} 

Больше примеров here и here

+0

Я понимаю, что ответ будет поместить строку s в JTextField, но он не работает. Какие-либо предложения? –

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