Ajuda pra fazer calculadora

6 respostas
S

Ae, pessoal estou tentando fazer 1 calculadora ñ quero declarar botao por botao, de 1 ate 10(no caso 0), pq o codigo ficaria imenso…entao estou fazendo o seguinte para criar os botoes:

private String nomes[] = {“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“0”};

…aki vai o resto do programa…

Container c = getContentPane();
       c.setLayout(grid);
       
       b = new JButton[nomes.length];

       for(int i = 0; i < nomes.length; i++)
       b[i] = new JButton(nomes[i]);
       c.add(b[i]);

…segue o resto…

com isso crio os 10 botoes, sem precisar declara 1 a 1, mas a minha duvida é a seguinte…como fazer agora pra pegar o valor de cada botao?? Sei q tenho q usar um ActionListener, mas como o actionlistener vai saber se apertei o botao 3 ou 5 por exemplo???

6 Respostas

M

eu uso sempre classes anonimas pra tratamento de evento..., mas ai, teu código vai ficar mais grande, e pelo jeito não é oq tu quer, mas eu faria assim, depois q os JButtons ja tivessem sido instanciados:

b[0].addActionListener {

   new ActionListener() {

      public void actionPerformed( ActionEvent e )
      {
          // codigo
      }
   }
}
C

Acabei de fazer esse ... saiu do forno agorinha. . não é uma claculadora mais da para aproveitar as funcionalidades . . .

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

public class Teste extends JFrame implements ActionListener{
	
	private JButton button[];
	
	public Teste() {
		super("Teste");
		this.setSize(300,150);
		this.getContentPane().setLayout(null);
		this.init();
	}
	
	public void init() {
		JButton bt[] = getButtons();
		for(int i=0; i<bt.length; i++) { 
			this.getContentPane().add(bt[i]);
		}
	}
	
	public void actionPerformed(ActionEvent e) {
		JButton bt = (JButton)e.getSource();
		JOptionPane.showMessageDialog(this, bt.getText());
	}
	
	public JButton[] getButtons() {
		if(button==null) {
			this.button = new JButton[3];
			for(int i=0; i<button.length; i++) {
				button[i] = new JButton("Botão ("+i+")");
				button[i].setBounds(50, 30*i, 100, 25);				
				button[i].addActionListener(this);
			}
		}
		return button;	
	}
	
	public static void main(String args[]) {
		new Teste().setVisible(true);
	}
	
}

Bons códigos .

blz. . 8)

F

tenta implementar ActionListener e adicionar this em todos os botoes:

b[i].addActionListener(this);

dai no metodo actionPerformed tenta isso:

public void actionPerformed(ActionEvent e){
 int x = Integer.parseInt(e.getActionCommand());
 // continuacao do seu codigo
}
D

eu acabei de fazer uma calculadora cientifica… ficou legalzinha :lol:

agora usar classe anonima fica muito grande o codigo, alem de meio bagunçado…
o negocio é usar boa pratica deprogramacao :twisted:

R

“matheus”:
mas ai, teu código vai ficar mais grande

mais grande? :eek:

q falta faz umas aulinhas de português… :lol: :lol: :lol:

:wink:

D

ops… foi mau…

mais maior di grande tá baum açim?

hauahaeeaea :oops:

Criado 29 de maio de 2004
Ultima resposta 30 de jun. de 2004
Respostas 6
Participantes 6