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.
[code]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);
}
}
[/code]
Aqui é a classe que eu quero que o meu ActionListener chame e execute.
[code]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);
}
}
[/code]
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.
Outra coisa, se isso já foi discutido me digam “onde” para que não gastemos tempo.