ActionMaps в Java - PullRequest
       2

ActionMaps в Java

0 голосов
/ 23 сентября 2010
public class XXX 
{
    public static void main(String args[]) {
        JComponent comp = new JTable(); // some panel or table
        comp.getInputMap().put(KeyStroke.getKeyStroke("F4"), "xxxaction");
        comp..getActionMap().put("xxxaction", new XXXAction());
    }

    public class XXXAction extends AbstractAction
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
             // Something;
        }
    }
}

Есть ли способ выполнить вызванное действие XXXAction () без нажатия клавиши «F4» с помощью поиска ActionMap ??

Заранее большое спасибо !!!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2010

Общий код будет:

Action action = component.getActionMap().get("...");

if (action != null)
{
    ActionEvent ae = new ActionEvent(component, ActionEvent.ACTION_PERFORMED, "");
    action.actionPerformed( ae );
}

Вам нужно будет узнать, требуется ли значение String для ActionEvent.

0 голосов
/ 23 сентября 2010

Я могу предложить два возможных способа:

  1. Зарегистрируйте свое действие с помощью Component, например JButton.Таким образом, Action будет вызываться, когда вы вручную нажимаете кнопку мышью.
  2. Определите метод invokeAction() для вашего класса XXX, который вызывает действие, либо получая действие из ActionMap через его ключ или путем сохранения ссылки на переменную экземпляра explicity и размещения его в ActionMap.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...