Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [?][java] come far digitare solo numeri in una JTextArea

    ciao a tutti

    ho un problema , devo far in modo che l'utente possa digitare solo numeri in una JTextArea cpme posso fare :master:

    ecco un codice d'esempio

    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.BorderLayout;
    import javax.swing.JPanel;

    public class finestra extends JFrame{

    JTextArea areaditesto;
    JButton faiqualcosa;

    public finestra() {
    super(" prova ");
    areaditesto = new JTextArea(1,10);
    this.getContentPane().add(areaditesto,BorderLayout .SOUTH);

    faiqualcosa = new JButton("faiqualcosa");
    faiqualcosa.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    // adesso in area di testo vorrei trovarmi solo numeri
    }
    });

    this.getContentPane().add(faiqualcosa,BorderLayout .CENTER);

    this.setSize(200,200);
    this.setVisible(true);
    }// finecostruttore

    public static void main(String[] args) {
    finestra finestra = new finestra();
    finestra.setDefaultCloseOperation(JFrame.EXIT_ON_C LOSE);
    }
    }

    come posso modificarlo per ottenere il risultato richiesto ??

    grazie per eventuali aiuti ciaooo
    fra la teoria e la pratica teoricamente non c'è differenza ma praticamente si

  2. #2
    Perchè non fai così.

    Realizza un KeyListener da associare alla tua JTextArea (in generale meglio un javax.swing.text.JTextComponent) nel quale effettui questa logica:

    Se il carattere digitato è un carattere comando non fai niente, dove per carattere comando intendo RETURN, BACK_SPACE, ALT, e altri

    Altrimenti se il carattere è un carattere tastiera (alfanumerico + caratteri speciali + punteggiatura ...) allora:

    Se il carattere non è Digit sottrai al testo del componente l'utlimo carattere inserito.

    Tali operazioni li compi sull'evento keyReleased del KeyListener.

    Ti ricordo che per controllare il carattere digitato devi fare riferimento al KeyEvent passato in input al metodo keyReleased grazie ai metodi getKeyChar(), getKeyCode().

    Leggiti le api per maggiori info.

    Si tratta di uno spunto, magari possiamo approfondirlo poi.


  3. #3
    grazie per lo spunto eumene adesso ci lavoro un pò
    so e poi ti posto il codice così ne discutiamo

    cmq speravo in qualche magico metodo di questa classe

    , poi aggiungo un altro problema vorrei anche limitare il numero di caratteri che può digitare l'utente ,ad esempio gli devo permettere di digitare solo numeri e non più di dieci caratteri, purtroppo modificare le dimensioni del JTextArea
    non mi è di nessuno aiuto in tal senso

    grazie ancora per l'aiuto ,alla prossima
    fra la teoria e la pratica teoricamente non c'è differenza ma praticamente si

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    c'è un componente specifico per le tue richieste, che potrebbe semplificarti (o complicarti) la vita:

    JFormattedTextField.... poi se invece vuoi proprio la TextArea... fai come dice Eumene.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Grazie a tutti prima che me lo diceste voi non sapevo dell'esistenza della classe JFormattedTextField cmq ancora non ho risolto completamente i miei problemi, ecco come ho modificato il codice

    public class finestra extends JFrame{

    JFormattedTextField areaditesto;
    JButton faiqualcosa;
    DecimalFormat foramtt_decimale;

    public finestra() {
    super(" prova ");
    foramtt_decimale = new DecimalFormat("####.##");
    foramtt_decimale.setMaximumFractionDigits(2);
    foramtt_decimale.setMaximumIntegerDigits(5);
    foramtt_decimale.setGroupingSize(7);

    areaditesto = new JFormattedTextField(foramtt_decimale);
    this.getContentPane().add(areaditesto,BorderLayout .SOUTH);

    faiqualcosa = new JButton("faiqualcosa");
    faiqualcosa.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    // adesso in area di testo vorrei trovarmi solo numeri
    ;
    try {
    JOptionPane.showMessageDialog(null, " la data digitata è " +areaditesto.getValue());
    } catch (HeadlessException ex) {
    JOptionPane.showMessageDialog(null,"eerore "+ex.getMessage());
    }
    }
    });

    this.getContentPane().add(faiqualcosa,BorderLayout .CENTER);

    this.setSize(200,200);
    this.setVisible(true);
    }// finecostruttore

    public static void main(String[] args) {
    finestra finestra = new finestra();
    finestra.setDefaultCloseOperation(JFrame.EXIT_ON_C LOSE);
    }
    }


    il problema e chi io vorrei fare in modo che l'utente non possa propio
    digitare numeri in una JFormattedTextField e che pur digitando cifre comunque non possa immetterne più di 8 come devo fare

    il codice che ho scritto , ho preso spunti gironzolando in internet,
    1)non impedise di scrivere lettere nel campo salvo poi richiamare l'ultimo numero inserito se ciò che si immette non è un numero

    2) permette di digitare un numero arbitrario di caratteri

    non so propio come fare

    cmq grazie per l'aiuto datomi fin'ora ,spero che mi sappiate aiutare anche adesso
    fra la teoria e la pratica teoricamente non c'è differenza ma praticamente si

  6. #6
    non riesco a modificare il mess precedente cmq quando ho scritto

    il problema e chi io vorrei fare in modo che l'utente non possa propio
    digitare numeri in una JFormattedTextField e che pur digitando cifre comunque non possa immetterne più di 8 come devo fare

    intendevo dire

    il problema e che io vorrei fare in modo che l'utente non possa propio
    digitare caratteri che non siano numeri in una JFormattedTextField e che pur digitando solo numeri comunque non possa immetterne più di 8 cifre ,come devo fare :master:

    a ri
    fra la teoria e la pratica teoricamente non c'è differenza ma praticamente si

  7. #7
    nessuno sa niente ???
    fra la teoria e la pratica teoricamente non c'è differenza ma praticamente si

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 © 2024 vBulletin Solutions, Inc. All rights reserved.