Como dou os comandos para os botões?

5 respostas
M
Como faço para dar os eventos para cada um dos botões?
package gui;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculadora extends JFrame {
	
	public Calculadora() {
		super("Calculadora");

		Container n = new JPanel();
		n.setLayout(new GridLayout(4,4, 5,5));
		n.add(new JButton("7"));
		n.add(new JButton("8"));
		n.add(new JButton("9"));
		n.add(new JButton("/"));
		n.add(new JButton("4"));
		n.add(new JButton("5"));
		n.add(new JButton("6"));
		n.add(new JButton("*"));
		n.add(new JButton("1"));
		n.add(new JButton("2"));
		n.add(new JButton("3"));
		n.add(new JButton("-"));
		n.add(new JButton("0"));
		n.add(new JButton("."));
		n.add(new JButton("="));
		n.add(new JButton("+"));
	
		JTextField display = new JTextField();
		display.setFont(new Font("Serif", Font.PLAIN, 26));
		
		Container c = getContentPane();
		c.add(BorderLayout.NORTH, display);
		c.add(BorderLayout.CENTER, n);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300,300);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new Calculadora();
	}

}

5 Respostas

M

.

wagnerfrancisco

Você quer adicionar um listener?

JButton btn = new JButton("7");
btn.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
                System.out.println("vc apertou o 7");
        }
});

É algo assim que tu procura?

M

quero que apareça os numeros escolhidos e o resultado no display.

wagnerfrancisco

Certo.

Como são vários botões e você vai fazer basicamente a mesma coisa, pode utilizar o mesmo objeto/método para tratar os eventos. Algo assim:

public class Calculadora extends JFrame implements ActionListener {
        private JTextField display;
	
	public Calculadora() {
		super("Calculadora");

		Container n = new JPanel();
		n.setLayout(new GridLayout(4,4, 5,5));

                JButton btn;

                btn =  new JButton("7");
                btn.addActionListener(this);
		n.add(btn);

                btn =  new JButton("8");
                btn.addActionListener(this);
		n.add(btn);

		// faca com os demais...
	
		display = new JTextField();
		display.setFont(new Font("Serif", Font.PLAIN, 26));
		
		Container c = getContentPane();
		c.add(BorderLayout.NORTH, display);
		c.add(BorderLayout.CENTER, n);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300,300);
		setVisible(true);
	}

        public void actionPerformed(ActionEvent e) {
               String label = e.getActionPerformed();
               display.setText(display.getText() + label);
        }
	
	public static void main(String[] args) {
		new Calculadora();
	}

}

Deste modo, o próprio objeto vai tratar os eventos no método actionPerformed. Como ele vai mostrar, fica a teu critério, neste exemplo eu concatenei os valores pra vc ver…

Acho que assim já dá pra ter uma noção. Eu não compilei este código, deve ter erros simples.

Falou.

wagnerfrancisco

Certo.

Como são vários botões e você vai fazer basicamente a mesma coisa, pode utilizar o mesmo objeto/método para tratar os eventos. Algo assim:

public class Calculadora extends JFrame implements ActionListener {
        private JTextField display;
	
	public Calculadora() {
		super("Calculadora");

		Container n = new JPanel();
		n.setLayout(new GridLayout(4,4, 5,5));

                JButton btn;

                btn =  new JButton("7");
                btn.addActionListener(this);
		n.add(btn);

                btn =  new JButton("8");
                btn.addActionListener(this);
		n.add(btn);

		// faca com os demais...
	
		display = new JTextField();
		display.setFont(new Font("Serif", Font.PLAIN, 26));
		
		Container c = getContentPane();
		c.add(BorderLayout.NORTH, display);
		c.add(BorderLayout.CENTER, n);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300,300);
		setVisible(true);
	}

        public void actionPerformed(ActionEvent e) {
               String label = e.getActionPerformed();
               display.setText(display.getText() + label);
        }
	
	public static void main(String[] args) {
		new Calculadora();
	}

}

Deste modo, o próprio objeto vai tratar os eventos no método actionPerformed. Como ele vai mostrar, fica a teu critério, neste exemplo eu concatenei os valores pra vc ver…

Acho que assim já dá pra ter uma noção. Eu não compilei este código, deve ter erros simples.

Falou.

Criado 24 de julho de 2012
Ultima resposta 24 de jul. de 2012
Respostas 5
Participantes 2