Qual o melhor Layout pra uma calculadora?

7 respostas
P

Pessoal, tenho algumas dúvidas relacionadas a Layouts. Bom, qual seria o melhor Layout para mostar uma calculadora? O FlowLayout mesmo?

A outra seria: fazendo por drag and drop no netBeans ou mesmo no Eclipse seria fácil localizar o botões no panel, mas assim o código fica realmente bagunçado, e é bem melhor fazer na mão mesmo. Bom, sem essa ferramenta como vou localizar o lugar exato que vou colocar um coponente? Tenho que ir testando?

OBS: Estou usando como IDE o Eclipse

7 Respostas

R

ja que o assunto é calculadora, veja meu link.

http://www.raghyjose.net/calculadora.php

P

outra duvida aqui, bom eu to fazendo assim:

JButton sete = new JButton();
panel.add(sete);
ActionListener listener = new MyActionListener();
sete.addActionListener(listener);

MyActionListener() é uma outra classe que criei

public class MyActionListener implements ActionListener{
	
	public void actionPerformed(ActionEvent event){
		Calculadora.text.setText("7");		
	}
}

Levando em consideração o meu código acima, eu vou ter que criar uma classe para cada listener? Tipo, vou ter que ter MyActionLister2, MyActionListener3 … , ter um para cada botão?

Outra coisa, o código que botei acima só sai o 7 uma vez, eu clico no botão que tem o 7 aparece o 7 no JTextField text que criei, mas se clico outra vez no sete não aparece mais 7, só fica um 7 mesmo. Alguém o porque disso?

C

Bom, você pode utilizar o mesmo ActionListener pra todos os botões, é necessário apenas verificar qual botão foi selecionado pelo evento!

Algo do tipo:

public class MyActionListener implements ActionListener{   
       
    public void actionPerformed(ActionEvent event){   
        if(event.getEvent() == objBotao7){
              Calculadora.text.setText("7");    
        }else if event.getEvent() == objBotao8){
               Calculadora.text.setText("8);
        }

       ... //e assim para todos os botões....

     
    }   
}
Marky.Vasconcelos

Ou então, pense um pouco mais OO

public class MyActionListener implements ActionListener{
private String text;
public MyActionListener(String numero){
text = numero;
}	
	public void actionPerformed(ActionEvent event){
		Calculadora.text.setText(text);		
	}
}

E para colocar nos botões.

um.addActionListener(new MyActionListener("1"));
dois.addActionListener(new MyActionListener("2"));
tres.addActionListener(new MyActionListener("3"));
quatro.addActionListener(new MyActionListener("4"));
cinco.addActionListener(new MyActionListener("5"));
seis.addActionListener(new MyActionListener("6"));  
sete.addActionListener(new MyActionListener("7"));  
oito.addActionListener(new MyActionListener("8"));
nove.addActionListener(new MyActionListener("9"));

E voce pode pensar em algo parecido para os botões de operadores.

R

nao sei se vc viu meu link, mas sinceramente acho que ali tem tudo que precisa. e falando no layout, usei o GridLayout (5,3)

segue o código para evitar o link.

package testes;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

class Calculadora  extends JFrame implements ActionListener{
    
    
        JButton espaco=new JButton("");
        JButton espaco2=new JButton("");
         JButton espaco3=new JButton("");
        
    
    
    JButton mais=new JButton("+");
  
  
   
    JButton menos=new JButton("-");
    
    
     
    JButton vezes=new JButton("*");
    JButton dividir=new JButton("/");
    JButton zero=new JButton("0");
    JButton um=new JButton("1");
    JButton dois=new JButton("2");
    JButton tres=new JButton("3");
    JButton quatro=new JButton("4");
    JButton cinco=new JButton("5");
    JButton seis=new JButton("6");
    JButton sete=new JButton("7");
    JButton oito=new JButton("8");
    JButton nove=new JButton("9");
     JButton igual=new JButton("=");
          JButton CE=new JButton("CE");
    //static double num1,num2,numeros,result;
    Scanner numeros = new Scanner(System.in);
    String sinal;
   int num1;
    int  num2;
    int result;
    
    JTextField mostrador;
    
     JPanel calc;
    
    public Calculadora(){
        
        setTitle("calculadora guj");
        setResizable(true);
        setSize(600, 600);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setBackground(Color.yellow);
        
       mais.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     menos.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      vezes.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     dividir.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      zero.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     um.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      dois.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     tres.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      quatro.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     cinco.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      seis.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     sete.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
         oito.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     nove.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     igual.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );

   
        
        
         calc= new JPanel();
        calc.setLayout( new GridLayout(5,3));
        mostrador= new JTextField("");
        mostrador.setSize(100,20);
             mostrador.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
        
        
        
        calc.add(mostrador);
        
     
         
            calc.add(um);
             calc.add(dois);
              calc.add(tres);
               calc.add(quatro);
                calc.add(cinco);
                 calc.add(seis);
                  calc.add(sete);
                   calc.add(oito);
                    calc.add(nove);
                      calc.add(zero);
                       calc.add(CE);
                       calc.add(mais);
                       
        calc.add(menos);
         calc.add(vezes);
          calc.add(dividir);
                        calc.add(igual);
             
              
              
              calc.add(espaco);
              calc.add(espaco2);
              calc.add(espaco3);
          
                    
                    add(calc);
                     CE.addActionListener(this);
                    mais.addActionListener(this);
                     menos.addActionListener(this);
                      vezes.addActionListener(this);
                       dividir.addActionListener(this);
                        igual.addActionListener(this);
                         zero.addActionListener(this);
                         um.addActionListener(this);
                           dois.addActionListener(this);
                            tres.addActionListener(this);
                             quatro.addActionListener(this);
                              cinco.addActionListener(this);
                               seis.addActionListener(this);
                                sete.addActionListener(this);
                                 oito.addActionListener(this);
                                 nove.addActionListener(this);                                 
                    
       
    
  
    
    }
    
     public void actionPerformed(ActionEvent e) {
        
          if (e.getSource() == CE) {
           CE();
        }
         
         
         if (e.getSource() == mais) {
            operMais();
        }
        if (e.getSource() == menos) {
            operMenos();
        }
        if (e.getSource() == dividir) {
            operDiv();
        }
        if (e.getSource() == vezes) {
            operVezes();
        }
         if (e.getSource() == zero) {
           
            String apice= mostrador.getText(); 
            String vaiLa=apice+"0";
            mostrador.setText(vaiLa); 
           
        }
         if (e.getSource() == um) {
        String apice2= mostrador.getText(); 
            String vaiLa2=apice2+"1";
            mostrador.setText(vaiLa2); 
        }
         if (e.getSource() == dois) {
        String apice3= mostrador.getText(); 
            String vaiLa3=apice3+"2";
         mostrador.setText(vaiLa3); 
        }
         if (e.getSource() == tres) {
             String apice4= mostrador.getText(); 
            String vaiLa4=apice4+"3";
             mostrador.setText(vaiLa4);  
        }
          if (e.getSource() == quatro) {
             String apice5= mostrador.getText(); 
            String vaiLa5=apice5+"4";
              mostrador.setText(vaiLa5);  
        }
          if (e.getSource() == cinco) {
             String apice6= mostrador.getText(); 
            String vaiLa6=apice6+"5";
              mostrador.setText(vaiLa6);  
        }
          if (e.getSource() == seis) {
             String apice7= mostrador.getText(); 
            String vaiLa7=apice7+"6";
            mostrador.setText(vaiLa7);   
        }
          
          if (e.getSource() == sete) {
             String apice8= mostrador.getText(); 
            String vaiLa8=apice8+"7";
              mostrador.setText(vaiLa8);   
        }
          if (e.getSource() == oito) {
             String apice9= mostrador.getText(); 
            String vaiLa9=apice9+"8";
              mostrador.setText(vaiLa9); 
        }
        if (e.getSource() == nove) {
             String apice10= mostrador.getText(); 
            String vaiLa10=apice10+"9";
               mostrador.setText(vaiLa10);  
        }
        
        if (e.getSource() == igual) {
             igual();    
        }
    // String apice= "";
      //      String vaiLa="";
            
     }
    
   
    public void um(){
        mostrador.setText("1");  
    }
    
    
    public void igual() {
        
        if (sinal.equals("+")) {   
           // mostrador.setText("");
            num2=Integer.parseInt(mostrador.getText());
            result=num1+num2;
          //  mostrador.setText("");
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
        
        
       
           
            
        if (sinal.equals("-")) {            
            num2=Integer.parseInt(mostrador.getText());
            result=num1-num2;
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
            
            
            
       
        if (sinal.equals("*")) {            
            num2=Integer.parseInt(mostrador.getText());
            result=num1*num2;
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
        
        
        if (sinal.equals("/")) {            
            num2=Integer.parseInt(mostrador.getText());
            result=num1/num2;
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
        
        
    }
    
   
    public void  operMais(){
       
    
      
       
       num1= Integer.parseInt(mostrador.getText());
        sinal="+";
        mostrador.setText("");
      
      
    }
    
    public void  operMenos(){
     num1= Integer.parseInt(mostrador.getText());
       sinal="-";
       mostrador.setText("");
       
       
       
    }
    
    public   void  operVezes(){
    num1= Integer.parseInt(mostrador.getText());
        sinal="*";
          mostrador.setText("");
      
    }
    
    public void operDiv(){
 num1= Integer.parseInt(mostrador.getText());
        sinal="/";
          mostrador.setText("");
       
        
        
        
    }
    public void CE() {
        mostrador.setText(""); 
    }
    
    
    
    public static void main(String args[]){
        
        
        new Calculadora().setVisible(true);
    }
}

valeu.

Marky.Vasconcelos

É… GridLayout resolve, mas dava para deixar esse código bem mais simples.

P

Valeu galera, me deem só um tempinho aqui pra eu fazer uns teste. :smiley: Se der tudo certo volto aqui para dizer e renomear o titulo do tópico. :stuck_out_tongue:

Criado 30 de junho de 2010
Ultima resposta 30 de jun. de 2010
Respostas 7
Participantes 4