Estou tentando utilizar a classe AbstractAction para facilitar a criação de
opções em menus e toolbars. Entretanto estou encontrando problemas por um
comportamento diferente adotado pelo menu e pela JToolbar (considere toda a
mensagem referente às classes do Swing).

Tenho uma classe MyClass que extende AbstractAction implementando o método
actionPerformed. Quando instancio esta classe, adiciono à lista de
propriedades dois novos valores:

obj.putValue(Action.SHORT_DESCRIPTION, "Short Description");
obj.putValue(Action.ACTION_COMMAND_KEY, "MyCommand");

Isso deveria (pelo que entendo) fazer com que o botão, na barra de
ferramentas, apresentasse o texto "Short Description" como tooltip e
passasse "MyCommand" como comando ao evento de ação (ActionEvent).
Embora o tooltip está correto, não consigo fazer com que "MyCommand" seja
passado no evento como comando da ação. Tanto no Menu quanto na Toolbar o
comando que especifico é ignorado e apenas o label da opção de menu é
utilizado como actionCommand (isso quando a ação é tomada pelo menu - se for
pela toolbar é null)....

Acho que ficou meio complexo, né ??

Resumindo...

Extendi uma classe de AbstractAction

public class MyClass extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Comando: " + e.getActionPerformed());
    }
}

Criei uma instância e atualizei a lista de propriedades:

MyClass myAction = new MyClass();
myAction.putValue(Action.SHORT_DESCRIPTION, "Short Desc");
myAction.putValue(Action.ACTION_COMMAND_KEY, "MyCommand");

Criei os componentes de tela:

JMenu menu = new JMenu("Menu");
menu.add(myAction);

JToolbar barra = new JToolbar();
barra.add(myAction);


Quando eu clicasse no menu ou no botão da barra, deveria ser invocado o
método actionPerformed. Isso, de fato é feito mas o getActionCommand não
retorna "MyCommand"...
Segundo o que entendi da documentação o processo (apesar de pouco comum,
pelo menos sob o meu ponto de vista) está correto.

Aguardo retorno e agradeço desde já

Atenciosamente

Flavio Eduardo de Córdova
Datasul Technology
Sun Certified Java Programmer

PS.: A mesma mensagem foi encaminhada ao Fórum

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    [regras da lista: http://www.soujava.org.br/regras.htm]
    ---------------------------------------------------------------------

Responder a