Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    clicca bottone - stampa in JTextField



    sto progettando una calcolatrice, per scuola..
    però sono fermo da un bel pò su un problema relativamente "semplice", rispetto a quello che dovrei fare..
    in pratica quando clicco su btn0 vorrei che su txtInput appaia il numero 0, e così dicendo per 1, 2, 3, 4...

    sapete come posso fare? ho fatto una bozza (in fondo, testo rosso), però non funziona..

    grazie!


    codice:
    package Calcolatrice;
    
    /**
     * modulo di registrazione.
     *
     * @author 
     */
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class Calcolatrice extends JFrame implements ActionListener{
       private JTextField txtInput;
    
       private JButton btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,
                       btnPunto,btnSom,btnSott,btnMolt,btnDiv,btnRad,btnPerc,btnPROVA,btnRis,btnReset,btnBack,btnOff;
    
       public Calcolatrice(){
           //Casella di Testo
           txtInput=new JTextField("");
    
           //Bottoni
           btn0=new JButton("0");
           btn1=new JButton("1");
           btn2=new JButton("2");
           btn3=new JButton("3");
           btn4=new JButton("4");
           btn5=new JButton("5");
           btn6=new JButton("6");
           btn7=new JButton("7");
           btn8=new JButton("8");
           btn9=new JButton("9");
           btnPunto=new JButton(",");
           btnSom=new JButton("+");
           btnSott=new JButton("-");
           btnMolt=new JButton("*");
           btnDiv=new JButton("/");
           btnRad=new JButton("√");
           btnPerc=new JButton("%");
           btnPROVA=new JButton("X");
           btnRis=new JButton("=");
           btnReset=new JButton("C");
           btnBack=new JButton("<_");
           btnOff=new JButton("OFF");
    
           //Posizionamento
           txtInput.setBounds(10,10,290,50);
           
           btn0.setBounds(10,320,110,50);
           btn1.setBounds(10,260,50,50);
           btn2.setBounds(70,260,50,50);
           btn3.setBounds(130,260,50,50);
           btn4.setBounds(10,200,50,50);
           btn5.setBounds(70,200,50,50);
           btn6.setBounds(130,200,50,50);
           btn7.setBounds(10,140,50,50);
           btn8.setBounds(70,140,50,50);
           btn9.setBounds(130,140,50,50);
           btnPunto.setBounds(130,320,50,50);
           btnSom.setBounds(190,320,50,50);
           btnSott.setBounds(190,260,50,50);
           btnMolt.setBounds(190,200,50,50);
           btnDiv.setBounds(190,140,50,50);
           btnRad.setBounds(250,80,50,50);
           btnPerc.setBounds(250,140,50,50);
           btnPROVA.setBounds(250,200,50,50);
           btnRis.setBounds(250,260,50,110);
           btnReset.setBounds(190,80,50,50);
           btnBack.setBounds(130,80,50,50);
           btnOff.setBounds(10,80,110,50);
    
           setLayout(null);
           Container cp=getContentPane();
    
           //Aggiungi
           cp.add(txtInput);
    
           cp.add(btn0);
           cp.add(btn1);
           cp.add(btn2);
           cp.add(btn3);
           cp.add(btn4);
           cp.add(btn5);
           cp.add(btn6);
           cp.add(btn7);
           cp.add(btn8);
           cp.add(btn9);
           cp.add(btnPunto);
           cp.add(btnSom);
           cp.add(btnSott);
           cp.add(btnMolt);
           cp.add(btnDiv);
           cp.add(btnRad);
           cp.add(btnPerc);
           cp.add(btnPROVA);
           cp.add(btnRis);
           cp.add(btnReset);
           cp.add(btnBack);
           cp.add(btnOff);
       }
    
       String d;
       public void actionPerformed(ActionEvent e){
           String c=e.getActionCommand();
    
           if(c.compareTo("btn0")==0){
               txtInput.setText(" ");
               d=d+'0';
               txtInput.setText(" "+d);
           } 
           
        }
    }

  2. #2
    E dov'è la chiamata a addActionListener? Anche se la classe ascoltatore è la stessa del componente, devi comunque dichiararlo...
    codice:
    btn0.addActionListener(this);
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


  3. #3
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    an si è vero, mi ero dimenticato..

    ora ho aggiunto addActionListener sia per txtInput che per btn0.
    però niente, non funziona ancora..

    secondo me c'è un errore nell' if.. però non saprei come modificarlo..

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    e dove hai settato l'actioncommand del bottone?

    Pensa bene se al posto di una serie di if che guardano all'actionCommand non è meglio implementare l'actionListere in altro modo (come inner class ad esempio)

  5. #5
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    scusa.. ma non ho capito..

    è da poco che utilizziamo questo tipo di codice.. e non saprei proprio come fare..
    puoi per caso farmi un esempio che funzioni.. pe ril tasto 0?

  6. #6
    Originariamente inviato da valia
    è meglio implementare l'actionListere in altro modo (come inner class ad esempio)
    Secondo me va bene anche così com'è...

    Riguardo al controllo del bottone premuto ti basta mettere
    codice:
    if(e.getSource()==btn0)
    {
        ...
    }
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


  7. #7
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    grazie.. ora funziona..

    però c'è un problemino, così:

    if(e.getSource()==btn0){
    txtInput.setText(" ");
    d=d+'0';
    txtInput.setText(d);
    }

    mi da: null0
    poi se premo altre volte 0 mi da: null0000

    ho provato a modificare qualcosa ma così facendo se premo il bottone mi stampa 0, ok, ma se lo premo altre volte non mi stampa più niente..
    come posso togliere quel "null" prima degli 0??

  8. #8
    Ovvio, se stampi l'actioncommand...

    Non basta fare così?
    codice:
    if(e.getSource()==btn0)
    {
        txtInput.setText(txtInput.getText()+"0");
    }
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.