Executar um ActionPerformed de um componente

4 respostas
furacao123

Aew galera estou com uma duvida, por exemplo quando tenho um JButom e pretendo disparar o evento como se eu estivesse clicando nele por programação, eu utilizo o metodo doClick()

e para os outros componentes como por exemplo um JRadioButtom ou JTextField como eu executo os actions do componente?

4 Respostas

discorpio

Boa noite Furacao123.

Voce pode fazer isto de duas maneiras, e para ambas voce vai implementar a interface ActionListener.

Primeiro declara a sua classe assim:

public class MinhaClasse extends JFrame implements ActionListener {
    .....
    .....
    .....
}

Esta infertace vai obrigar a voce implementar o método ActionPerformed, assim:

public class MinhaClasse extends JFrame implements ActionListener {

    private JTextField meutextfield;
    private JRadioButton meuradiobutton;
    private JComboBox meucombobox;
    .....
    .....
    .....
    
    public void actionPerformed(ActionEvent e) {
          if (e.getSource() == meutextfield) {
                 .....
          } else if (e.getSource == meuradiobutton) {
                 .....
          } else if (e.getSource == meucombobox) {
                 ....
          }
}

E pra finalizar a primeira etapa, voce adiona os actionlisteners nos componentes desta forma:

public class MinhaClasse extends JFrame implements ActionListener {

    private JTextField meutextfield;
    private JRadioButton meuradiobutton;
    private JComboBox meucombobox;
    .....
    .....
    .....

    public MinhaClasse() {
          meutextfield = new JTextField();
          meutextfield.addActionListener(this);

          meuradiobutton = new JRadioButton();
          meuradiobutton.addActionListener(this);

          meucombobox = new JComboBox();
          meucombobox.addActionListener(this);
    }
    
    public void actionPerformed(ActionEvent e) {
          if (e.getSource() == meutextfield) {
                 .....
          } else if (e.getSource == meuradiobutton) {
                 .....
          } else if (e.getSource == meucombobox) {
                 ....
          }
}

A outra maneira é bem mais simples e é muito utilizada quando voce está apenas implementando listeners de evento em apenas um componente.

public class MinhaClasse extends JFrame {

    private JTextField meutextfield;
    .....
    .....
    .....
    
    public MinhaClasse() {
          meutextfield = new JTextField();
          meutextfield.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                       ........
                }
          });
    }
}

Repare que desta maneira, voce não precisa identificar o componente clicado com o “e.getSource()”, pois voce está adicionando e automaticamente implementando o listener dentro do componente.

Um abraço.

Daniel_Girotto

Boa Noite

Pode utilizar o método doClick() para simular o click em todos os componentes que herdam da classe AbstractButton, (JButton, JMenuItem, JToggleButton, JCheckBox, JRadioButton). Mas para JTextField não é possivel.

Abraço!

furacao123

Adicionar um actionPerformed tranquilo, é que estou tendo problemas ao chamar um JDialog vindo de um JFrame quando crio o JDialog o focu fica na janela ae ao apertar enter por exemplo ele me aparece as opções da janela de maximizar, minimizar, etc o menu da janela, mas eu preciso q ao abrir o jdialog o foco fique num componente, entao estava pensando em simular um TAB pois quando esse menu aparece eu aperto tab e ele volta ao focu normal da janela e dando enter navego entre os componentes normalmente.

furacao123

acabei descobrindo porque isso acontece é que no atalho para chamar o JDialog eu estava utilizando o F10 ae ele abria o novo JDialog mas ficava com foco na janela do windows onde ao apertar enter aparecia Maximizar Fechar, etc.

Criado 17 de março de 2011
Ultima resposta 21 de mar. de 2011
Respostas 4
Participantes 3