[RESOLVIDO]ActionListener que chama ação de uma classe externa

2 respostas
NotleRow

Boa noite pessoal!

Gostaria de saber se alguém pode me explicar ou fornecer algum material que me ensine a como adicionar uma ação de ActionListener, onde a ação dele chame uma outra classe.

Tipo:

Tenho uma janela principal com os menus em uma classe que se chama estudos.

import javax.swing.*;
import java.awt.event.*;

public class Estudos extends JFrame{
public Estudos(){
  super("Menus");

  // Cria a barra de menus
  JMenuBar barra = new JMenuBar();
  setJMenuBar(barra);

  // Cria um menu
  JMenu opcoes = new JMenu("Opções");

  // Cria um item de menu e o adiciona no menu
  JMenuItem item = new JMenuItem("Item 1");
  
  // Detecta a interação com o item de menu
  item.addActionListener(
    new ActionListener(){
      public void actionPerformed(ActionEvent e){
        JOptionPane.showMessageDialog(null, "Fui escolhido");
      }
    }
  );

  opcoes.add(item);

  // Adiciona o menu à barra de menus
  barra.add(opcoes);

  setSize(300, 150);
  setVisible(true);    
}

public static void main(String args[]){
  Estudos app = new Estudos();
  app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Aqui é a classe que eu quero que o meu ActionListener chame e execute.

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.text.*;
import java.awt.event.*;

public class ExemploLabel extends JFrame {
	JLabel nome, idade, telefone, celular;
	JTextField Tnome, Tidade;
	JFormattedTextField Ttelefone, Tcelular;
	JButton BtSalvar, BtSair;
	MaskFormatter mascaratelefone, mascaracelular;
	
	public ExemploLabel(){
		super("Exemplo com label");
		Container tela = getContentPane();
		setLayout(null);		
		
		//atribuição de valores para os JLabels
		nome = new JLabel("Nome");
		idade = new JLabel("Idade");
		telefone = new JLabel("telefone");
		celular = new JLabel("Celular");
		
		try{
			mascaratelefone = new MaskFormatter("(##)-####-####");
			mascaracelular = new MaskFormatter("(##)-####-####");
			mascaratelefone.setPlaceholderCharacter('_');
			mascaracelular.setPlaceholderCharacter('_');
			
		}catch(ParseException excp){}
		
		//atribuição dos valores para os JTextsFilds
		Tnome = new JTextField(50);
		Tidade = new JTextField(3);
		Ttelefone = new JFormattedTextField(mascaratelefone);
		Tcelular = new JFormattedTextField(mascaracelular);
		
		//atribui um botão ao JFrame
		BtSalvar = new JButton("Salvar");
		BtSair = new JButton("Sair");
				
		//define os posicionamentos e as larguras de cada JLabel 
		nome.setBounds(50,20,80,20);
		idade.setBounds(50,60,80,20);
		telefone.setBounds(50,100, 80,20);
		celular.setBounds(50,140,80,20);
		
		//define posicionamento dos JTextsFields
		Tnome.setBounds(110,20,200,20);
		Tidade.setBounds(110,60,40,20);
		Ttelefone.setBounds(110,100,100,20);
		Tcelular.setBounds(110,140,100,20);
				
		
		// define o posicinamento do botão salvar
		BtSalvar.setBounds(150,180,100,20);
		BtSalvar.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent e){
						JOptionPane.showMessageDialog(null, "O usuário foi cadastrado com sucesso!");
					}
				});
		
		BtSair.setBounds(280,180,100,20);
		BtSair.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent e){
						int opcao;
						Object[] BtSair={"Sim","Não"};
						
						opcao = JOptionPane.showOptionDialog(null,"Deseja sair desta operação?", 
								"Fechar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
								null, BtSair, BtSair[0]);
								if(opcao == JOptionPane.YES_OPTION)
									System.exit(0);
						
					}
				});
		
		
		//define techa de atalho
		BtSair.setMnemonic(KeyEvent.VK_S);
		//determina o botão Salvar como foco após precionar o enter
		getRootPane().setDefaultButton(BtSalvar);
		
		//adiciona os JLabels acima na janela
		tela.add(nome);
		tela.add(idade);
		tela.add(telefone);
		tela.add(celular);
		
		//adiciona os TextsFields acima na janela
		tela.add(Tnome);
		tela.add(Tidade);
		tela.add(Ttelefone);
		tela.add(Tcelular);
		
		//adiciona o botão salvar na tela
		tela.add(BtSalvar);
		tela.add(BtSair);
			
		//define que o usuário não pode redimensionar a janela
		setResizable(false);		
		//define tamanho da janela
		setSize(400,250);
		//define janela como visivel
		setVisible(true);
		//abre janela no centro
		setLocationRelativeTo(null);
	}

	
	public static void main(String[] args) {
		ExemploLabel app = new ExemploLabel();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		

	}

}

O código é de iniciante, sugestões e aprimoramentos são sempre bem vindos! Mas, não se esqueçam de me "exclarecer" as dúvidas primeiro. :P

Outra coisa, se isso já foi discutido me digam "onde" para que não gastemos tempo.

2 Respostas

RDSILVA

Fala ai veio vê se é isso que vc quer fazer…
Substitui esta parte de codigo na sua classe
qq coisa fala ai
Abraço

// Detecta a interação com o item de menu   
  item.addActionListener(   
    new ActionListener(){   
      public void actionPerformed(ActionEvent e){   
        ExemploLabel exemploLabel = new ExemploLabel();   
      }   
    }   
  );
NotleRow

Muito obrigado rdSilva!!! Era isso mesmo. :smiley:

Criado 2 de agosto de 2008
Ultima resposta 2 de ago. de 2008
Respostas 2
Participantes 2