Como utilizar Action Event dentro de uma mesma classe

1 resposta
programaçãojava
GabrielSantos

Ola pessoal, estou fazendo uma aplicação em Java que contem um menu de 10 opções (respectivamente 10 exercicios). Ao entrar no primeiro o usuario deve escolher entre calcular a area do circulo, retangulo ou triangulo. Para isso tenho uma classe circulo (com todos os metodos que vou herdar), entao crio uma nova janela para receber esses valores e colocalos em um JTextField, porem ja estou utilizando o Action Event, como faço para receber essas ações e continuar com o desenrolar do codigo?
Segue um trecho do código:

package trabalhoii;
import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**

  • @author Sr Darth
    */
    public class exercicioUm extends JFrame implements ActionListener{

    public JPanel painel1JP, painel2JP;
    
    public JLabel textoJL;
    
    public JTextField textoTF;
    
    public JButton areaCirculoJB, areaRetanguloJB, areaTrianguloJB;
    
    public Circulo circulo;
    
    //Janela Circulo
    
    public JPanel painelC1,painelC2;
    
    public JTextField resultadoTF, raioTF;
    
    public JLabel raioJL, resultadoJL;
    
    public JButton calcularBT, sairCBT;
    
    exercicioUm(){
    
    painel1JP = new JPanel(); painel2JP = new JPanel();
    
    textoJL = new JLabel(“Selecione uma das opções:);
    
    textoTF = new JTextField();
    
    areaCirculoJB = new JButton(“Calcular area do circulo”);
    
    areaRetanguloJB = new JButton(“Calcular area do retangulo”);
    
    areaTrianguloJB = new JButton(“Calcular area do triangulo”);
    
    this.setLayout(new BorderLayout());
     this.add(painel1JP,BorderLayout.NORTH);
     this.add(painel2JP,BorderLayout.CENTER);
    
     painel1JP.setLayout(new GridLayout(2,2));
     painel2JP.setLayout(new GridLayout(3,3));
    
     painel1JP.add(textoJL);
     painel2JP.add(areaCirculoJB); painel2JP.add(areaRetanguloJB);painel2JP.add(areaTrianguloJB);
    
     areaCirculoJB.addActionListener(this);
     areaRetanguloJB.addActionListener(this);
     areaTrianguloJB.addActionListener(this);
     
     this.setTitle("Exercicio I");
     this.setSize(300,250);
     this.setLocationRelativeTo(null);
     this.setDefaultCloseOperation(EXIT_ON_CLOSE);
     //menu();
     this.setVisible(true);
    

    }

    private void circulo(){
    
    painelC1 = new JPanel(); painelC2 = new JPanel();
    
    resultadoTF = new JTextField(5); raioTF = new JTextField(5);
    
    raioJL = new JLabel(“Digite o raio:); resultadoJL = new JLabel(“Resultado:);
    
    calcularBT = new JButton(“Calcular”); sairCBT = new JButton(“Sair”);
    
    this.setLayout(new BorderLayout());
     this.add(painelC1,BorderLayout.CENTER);
     this.add(painelC2,BorderLayout.SOUTH);
     
     painelC1.setLayout(new GridLayout(3,3));
     painelC2.setLayout(new GridLayout(1,2));
     
     painelC1.add(raioJL);painelC1.add(raioTF);painelC1.add(resultadoJL);
     painelC2.add(calcularBT);painelC2.add(sairCBT);
     
     calcularBT.addActionListener(this);
     
     this.setTitle("Area Circulo");
     this.setSize(300,250);
     this.setLocationRelativeTo(null);
     this.setDefaultCloseOperation(EXIT_ON_CLOSE);
     this.setVisible(true);
    

    /*

    PRECISO RECEBER AS AÇÕES AQUI
    
    void actionPerformed(ActionEvent e){
    
    if(e.getSource() == calcularBT){
    
    }
    
    }
    

    */
    }

    <a class="mention" href="/u/override">@Override</a>
    
    public void actionPerformed(ActionEvent e) {
    
    if(e.getSource() == areaCirculoJB){
    
    circulo();
    
    }
    
    }
    

    public void janelaCirculo(){

    }
    }

1 Resposta

D

Dentro do actionPerformed:

public void actionPerformed(ActionEvent e) {
  if(e.getSource() == areaCirculoJB){
    circulo();
  }
  // deve colocar aqui
  // isso significa: se o botão que executou a ação for o calcularBT, então ....
  if(e.getSource() == calcularBT){
  }
}

Não recomendo que faça assim pois acho muito confuso, prefiro assim:

areaCirculoJB.addActionListener((ActionEvent e)->{
  circulo();
});
calcularBT.addActionListener((ActionEvent e)->{
  calcular();
});
Criado 17 de maio de 2018
Ultima resposta 17 de mai. de 2018
Respostas 1
Participantes 2