[RESOLVIDO]Que código eu utilizo para adicionar eventos para objetos?

4 respostas
D

Eu até hoje só programei interfaces de forma visual. E logo necessitarei de fazer "no braço".

Para treino, resolvi fazer uma simples calculadora com 5 funções básicas, sei que é bem fácil, mais estou comessando a escrever ao envez de uzar o "drag drog".

Tentei tanto no netBeans quanto no Desktop Eclipse, criar um programa de forma visual para ver se lendo o código, intendifico como que eles fazem para executar ações quando um botão for precionado, mais não consegui entender muita coisa.

Então, podem me dizer que código eu utilizo para isto ?

Adicionar eventos ao precionar componentes swing?

Para por exemplo: ao precionar um botão, executar um método.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication29;


import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JFrame;
import java.awt.ActiveEvent;
import java.awt.Event.*;


/**
 *
 * @author vmf
 */
public class Main {
    private static final long serialVersionUID = 1L;
	private static JButton somar, subtrair, multiplicar, dividir, mod;
        private static JTextField tx1, tx2, tx3;
        public double num1,num2, res;
        public String a,b;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

       iniciar();

    }

    public static void iniciar(){
        
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(0, 0, 500, 325);
        frame.setVisible(true);
        frame.setLayout(null);
        frame.setTitle("calculadora");
        tx1=new JTextField("");

        tx1.setBounds(50,50,400,25);

        frame.add(tx1);
        tx2=new JTextField("");
        tx2.setBounds(50,175,400,25);
        frame.add(tx2);

        tx3=new JTextField("");
        tx3.setBounds(50,250,400,25);
        frame.add(tx3);

        somar=new JButton("+");
        somar.setBounds(50,80,60,60);
        somar.setVisible(true);
        frame.add(somar);
       // Como eu faço para fazer o método Somar ??????

        subtrair=new JButton("-");
        subtrair.setBounds(140,80,60,60);
        subtrair.setVisible(true);
        frame.add(subtrair);
      // Como eu faço para fazer o método Subtrair ??????

        dividir=new JButton("/");
        dividir.setBounds(220,80,60,60);
        dividir.setVisible(true);
        frame.add(dividir);
   // Como eu faço para fazer o método Dividir ??????

        multiplicar=new JButton("*");
        multiplicar.setBounds(300,80,60,60);
        multiplicar.setVisible(true);
        frame.add(multiplicar);
   // Como eu faço para fazer o método Multiplicar ??????

           mod=new JButton("mod");
        mod.setBounds(380,80,60,60);
        mod.setVisible(true);
        frame.add(mod);
 // Como eu faço para fazer o método Mod ??????


    }
  private void  Somar(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1+num2;
     tx3.setText(""+res);

    }  private void  Subtrair(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1-num2;
     tx3.setText(""+res);

    }  private void  Dividir(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1/num2;
     tx3.setText(""+res);

    }  private void  Multiplicar(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1*num2;
     tx3.setText(""+res);

    }
      private void  Mod(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1%num2;
     tx3.setText(""+res);

    }

}

4 Respostas

gqferreira

Olá. Dê uma olhada nesse exemplo:

package teste;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.WindowConstants;

public class Teste extends javax.swing.JFrame {
	private JButton jButton2;
	
	public static void main(String[] args) {
		new Teste().setVisible(true);
	}
	/**
	 * Auto-generated main method to display this JFrame
	 */
	public Teste() {
		try {
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jButton2 = new JButton();
				getContentPane().add(jButton2);
				jButton2.setText("jButton2");
				jButton2.setBounds(170, 243, 67, 22);
				
				jButton2.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {						
						jButton1.setLocation((int)jButton1.getLocation().getX()+1,(int)jButton1.getLocation().getY()+1);
					}
				});
			}
			pack();
			setSize(400, 300);
		} catch (Exception e) {
			//add your error handling code here
			e.printStackTrace();
		}
	}

}

Esse exemplo mostra o actionListener que ocorre no clicar de um botao, no de um campo de texto entre outros em que a evento seja de acao.
Voce pode dar uma pesquisa em outros como KeyListener para pressionamento de teclas, mouseListener para interagir com eventos de mouse entre outros.
Qualquer duvida pode perguntar....

gqferreira

Observacao:

Quando vc cria o componente e adiciona, nao precisa dizer que ele é visible(true), isso é padrão.

Allan_Barcelos

Para colocar um evento em um botão tua classe tem que implementar o metodo ActionListener, exemplo:

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.JPanel;


public class FrameInicial extends JFrame{
	
	PanelInicial pi;
	
	public FrameInicial(){
		
		setTitle("Frame");
		this.add(pi = new PanelInicial(this));
		this.pack();
		this.setLocationRelativeTo(null);
		this.add(pi);
		this.setLayout(null);
		this.setContentPane(pi);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setResizable(false);
	}
	
     public class PanelInicial extends JPanel implements ActionListener{
	
	JButton novo;
	JButton load;
	private Object c;
  	private JFrame frame;
	
	public PanelInicial(JFrame f){

		super(new BorderLayout());
		frame = f;
		
        novo = new JButton("Novo");
        novo.addActionListener(this);
        
        load = new JButton("Carregar");
        load.addActionListener(this);
        
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(1,0));
        buttonPanel.add(novo);
        buttonPanel.add(load);
        
        add(buttonPanel, BorderLayout.PAGE_START);
        
		
	}
	
	public void actionPerformed(ActionEvent e){

		if(e.getSource() == novo){
                                      // executa o comando quando ocorrer um clique no botão novo.			
		}
		else if (e.getSource() == load) {
                                      // executa o comando quando ocorrer um clique no botão load
                               }
              }
	
	
	public void fecha(){
		frame.dispose();
	}
}
public static void main(String[] args){
	FrameInicial frame = new FrameInicial();
}
}
D

Valeu a todos, consegui adicionar eventos ao botão.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication30;


import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JFrame;
import java.awt.ActiveEvent;
import java.awt.Event.*;
import java.awt.event.ActionEvent;


/**
 *
 * @author vmf
 */
public class Main {
    private static final long serialVersionUID = 1L;
	private static JButton somar, subtrair, multiplicar, dividir, mod;
        private static JTextField tx1, tx2, tx3;
        public static double num1,num2, res;
        public static String a,b;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

       iniciar();

    }

    public static void iniciar(){

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(0, 0, 500, 325);
        frame.setVisible(true);
        frame.setLayout(null);
        frame.setTitle("calculadora");
        tx1=new JTextField("");
        tx1.setVisible(true);
        tx1.setBounds(50,50,400,25);

        frame.add(tx1);
        tx2=new JTextField("");
        tx2.setBounds(50,175,400,25);
        tx2.setVisible(true);
        frame.add(tx2);

        tx3=new JTextField("");
        tx3.setBounds(50,250,400,25);
        tx3.setVisible(true);
        frame.add(tx3);

        somar=new JButton("+");
        somar.setBounds(50,80,60,60);
        somar.setVisible(true);
        frame.add(somar);
        somar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1+num2;
     tx3.setText(""+res);
            }

        });

        subtrair=new JButton("-");
        subtrair.setBounds(140,80,60,60);
        subtrair.setVisible(true);
        frame.add(subtrair);
      subtrair.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                
            a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1-num2;
     tx3.setText(""+res);
                
            }
      });
        dividir=new JButton("/");
        dividir.setBounds(220,80,60,60);
        dividir.setVisible(true);
        frame.add(dividir);
         dividir.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
          a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1/num2;
     tx3.setText(""+res);
                
                
            }
      });

        multiplicar=new JButton("*");
        multiplicar.setBounds(300,80,60,60);
        multiplicar.setVisible(true);
        frame.add(multiplicar);
       multiplicar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
           a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1*num2;
     tx3.setText(""+res);        
                
                
            }
      });

           mod=new JButton("mod");
        mod.setBounds(380,80,60,60);
        mod.setVisible(true);
        frame.add(mod);
              mod.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                  a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1%num2;
     tx3.setText(""+res);  
                
                
            }
      });


    }
   
  private void  Dividir(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1/num2;
     tx3.setText(""+res);

    }  private void  Multiplicar(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1*num2;
     tx3.setText(""+res);

    }
      private void  Mod(java.awt.event.ActionEvent evt) {
      a=tx1.getText();
      b=tx2.getText();
     num1=Double.parseDouble(a);
     num2=Double.parseDouble(b);
     res=num1%num2;
     tx3.setText(""+res);

    }

}
Criado 27 de junho de 2010
Ultima resposta 28 de jun. de 2010
Respostas 4
Participantes 3