• User Newbie

    Probemino con java

    Ciao a tutti, avrei bisogno di inserire un if che mi controlli che nell'area di testo vengano inseriti solo numeri e non caratteri, e che qualora se ne si inseriscano, mi dia una finestra di messaggio. Grazie per l'aiuto!

    /**

    • questi pacchetti contengono le componenti per la gestione delle finestre e degli eventi
      /
      import javax.swing.
      ;
      import java.awt.event.*;
      public class RifaccioMedia2 {

    public static void main (String[] args) {

    /**
    *Costruisco una finestra e permetto che la JVM si possa fermare (parametro exit_on_close)
    */
    JFrame finestra = new JFrame("Calcolo la media di due numeri, anche a virgola mobile");
    finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    /**
    *Costruisco un pannello; setlayout crea l'interfaccia e l'oggetto boxlayout la disposizione, che posso variare.
    */
    JPanel pannello = new JPanel();
    pannello.setLayout(new BoxLayout(pannello, BoxLayout.Y_AXIS));

        /**
         *showmessagedialog è un metodo della classe joptionpane che mi crea una finestra di dialogo "preconfezionata"
         */
        JOptionPane.showMessageDialog( null, "Benvenuto nel programma di calcolo della media di due numeri creato da Francesco" );
         
          if (PrimoNumero == char ) {
     JOptionPane.showMessageDialog( null, "Puoi inserire solo numeri interi o con la virgola, non caratteri" );
    }
    

    /**
    *Costruisco una scritta ed un'area di testo e li aggiungo al pannello
    */
    JLabel PrimoNumerolabel = new JLabel("Primo numero:");
    final JTextField PrimoNumero = new JTextField(50);
    pannello.add(PrimoNumerolabel);
    pannello.add(PrimoNumero);

    /**
    *Costruisco una scritta ed un'area di testo e li aggiungo al pannello (per il secondo numero)
    */
    JLabel SecondoNumerolabel = new JLabel("Secondo numero:");
    final JTextField SecondoNumero = new JTextField(50);
    pannello.add(SecondoNumerolabel);
    pannello.add(SecondoNumero);

     /**
      *Costruisco un bottone e lo aggiungo al pannello
      */
     JButton pulsOk = new JButton("OK");
     pannello.add(pulsOk);
     
     /**
    

    *Costruisco una scritta ed un'area di testo e li aggiungo al pannello (per il risultato)
    */
    JLabel RisultatoLabel = new JLabel("Risultato:");
    final JTextField Risultato = new JTextField(50);
    pannello.add(RisultatoLabel);
    pannello.add(Risultato);

    /**
     *Questa classe implementa l'actionlistener contenuto nel pacchetto java.awt.event
     */ 
    

    class Media implements ActionListener{
    /**

    • All'interno di questa classe, implemento actionperformed per dire "cosa fare" una volta intercettata la pressione del pulsante
      */
      public void actionPerformed (ActionEvent event) {
      String fromUser = PrimoNumero.getText();
      String fromUser2 = SecondoNumero.getText();

      double n1 = Double.parseDouble(fromUser);
      double n2 = Double.parseDouble(fromUser2);
      double media = (n1 + n2) / 2 ;
      String calcola = "";
      String risultato = calcola.format("%.2f", media); // %.2f mette la virgola ai decimali
      Risultato.setText(risultato); //mette il totale in risultato
      }
      }

    /**
    *Creo un istanza di actionlistener ed aggiungo pulsOK (che contiene un oggetto jbutton). Il tipo della variabile listener può essere Media perchè implementa actionlistener
    */

    ActionListener listener = new Media();

    pulsOk.addActionListener(listener);
    finestra.setContentPane(pannello);
    finestra.pack();//Assegna le dimensioni minime sufficienti a mostrare tutto il contenuto della finestra
    finestra.setVisible(true);
    }
    }