[JAVA] Conversione contenuto JTextField in intero

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
zankyee
Prode Principiante
Messaggi: 3
Iscrizione: mercoledì 19 aprile 2017, 13:45
Sesso: Maschile

[JAVA] Conversione contenuto JTextField in intero

Messaggio da zankyee »

Salva a tutti,
sto creando per un compito dato a scuola una calcolatrice in java, molto semplice ( vedi immagine ):
Immagine Calcolatrice

Non so come estrarre il valore nelle due JTextField e convertirle in intero per poi eseguire le varie operazioni, qualcuno puo aiutarmi ?
Ps: un altro problema ( secondario però ) è che non riesco ad inserire tramite la pressione dei tasti numerici il valore numerico appunto, nelle apposite text field selezionate.

Grazie per l'aiuto. Pace :birra: :birra: :birra:
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [JAVA] Conversione contenuto JTextField in intero

Messaggio da DoctorStrange »

Giudicando dall'unico indizio che dai un pò più specifico che è "JTextField", sembra che tu stia cercando di sviluppare in SWING.

Prima di tutto: se posti il codice che hai realizzato, ti si potrebbe aiutare molto meglio.

Detto questo, sospetto che non hai molto chiaro il principio di funzionamento di SWING stesso.

SWING è un framework che funziona ad "eventi".

Significa che ogni volta che premi un pulsante, o clicchi su un option box, o su uno qualunque degli altri controlli, il framework genera un evento, ed è quì dentro che tu dovrai mettere il codice di ciò che deve fare la tua applicazione ogni volta che tu premi uno dei bottoni; mentre io sospetto che tu hai messo l'intero codice in un main globale che non verrà chiamato mai, ma se non posti il tuo codice non lo potremo sapere mai.

Devi quindi "appendere" ad ogni bottone, o campo di testo, o qualunque controllo della tua interfaccia grafica, un "Listener" ovvero un oggetto che sia in grado di "intercettare" quando l'utente preme quel bottono, o quel controllo, e di scatenare in corrispondenza l'evento di "BottonePremuto" per esempio e, in quel bottone tu vai a prendere il contenuto dei due TextField, e li sommi, sottrai, moltiplichi o qualunque cosa ti voglia, in base a quale pulsante è stato premuto.

Saluti.
zankyee
Prode Principiante
Messaggi: 3
Iscrizione: mercoledì 19 aprile 2017, 13:45
Sesso: Maschile

Re: [JAVA] Conversione contenuto JTextField in intero

Messaggio da zankyee »

harpefalcata [url=http://forum.ubuntu-it.org/viewtopic.php?p=4975208#p4975208][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Giudicando dall'unico indizio che dai un pò più specifico che è "JTextField", sembra che tu stia cercando di sviluppare in SWING.

Prima di tutto: se posti il codice che hai realizzato, ti si potrebbe aiutare molto meglio.

Detto questo, sospetto che non hai molto chiaro il principio di funzionamento di SWING stesso.

SWING è un framework che funziona ad "eventi".

Significa che ogni volta che premi un pulsante, o clicchi su un option box, o su uno qualunque degli altri controlli, il framework genera un evento, ed è quì dentro che tu dovrai mettere il codice di ciò che deve fare la tua applicazione ogni volta che tu premi uno dei bottoni; mentre io sospetto che tu hai messo l'intero codice in un main globale che non verrà chiamato mai, ma se non posti il tuo codice non lo potremo sapere mai.

Devi quindi "appendere" ad ogni bottone, o campo di testo, o qualunque controllo della tua interfaccia grafica, un "Listener" ovvero un oggetto che sia in grado di "intercettare" quando l'utente preme quel bottono, o quel controllo, e di scatenare in corrispondenza l'evento di "BottonePremuto" per esempio e, in quel bottone tu vai a prendere il contenuto dei due TextField, e li sommi, sottrai, moltiplichi o qualunque cosa ti voglia, in base a quale pulsante è stato premuto.

Saluti.

Hai praticamente capito il mio problema, e solo con il tuo consiglio sono riuscito a risolverlo :) Grazie tante :)
L'unico problema è sapere come faccio ad usare il tastierino numero :(
il codice è il seguente ( per le varie operazioni ) : Codice operazioni ho fatto cosi per tutte le operazioni ( ovviamente addattando la procedura )

per il tastierino numerico invece, ho solo dichiarato i bottoni ,posizionati e resi visibili.

uso le seguenti librerie: foto librerie
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [JAVA] Conversione contenuto JTextField in intero

Messaggio da DoctorStrange »

Il codice che hai postato non serve a molto, è solo la parte che si occuperebbe difare le operazioni matematiche, qualora avesse disponibili i dati corretti.

Si vede però da quel codice, che tu usi le wrapper per fare le operazioni sui dati immessi, e questo è un primo errore, infatti i dati immessi attraverso una semplice JTextBox, sono considerati, se non sbaglio come semplici Stringhe, d'altronde è quello che dice anche il suo nome, quindi prima di ogni cosa sarebbe bene che fai un controllo e validi i dati inseriti dall'utente, per assicurarti, ad esempio che l'utente non inserisca caratteri alfabetici, ed in questo caso fai comparire un pop-up, oppure intervieni da codice in maniera "violenta" ed elimini ogni carattere inserito erroneamente, in modo da essere certo di passare alle funzioni matematiche sottostanti solo veri caratteri numerici.

Nello stesso validatore, devi poi assicurarti che venga rispettata la "naming convention" di Java, in particolare assicurati che i numeri decimali vengano inseriti usando il carattere "punto" e non "virgola" (o viceversa, ora non mi ricorda quale dei due Javacnsidera come separatore decimale), e quindi tramite una regex sostituisci il carattere separatore con quello opportuno, ti consiglio di cercare a questo scopo i metodi di manipolazione delle stringhe come split, replace, concat... .

Detto questo, arriviamo alla parte più importante, sembra che tu abbia disegnato la tua interfaccia grafica e poi hai pensato di implementarla, semplicemente scrivendo il codice del core che, nel tuo caso sono le routine matematiche.

Visto che il layout sembra fatto abbastanza bene, hai per caso utilizzato qualche applet che ti ha formattato in maniera automatica il layout? Oppure hai generato questo layout dichiarando ogni componente grafico e la sua posizione sulla griglia attraverso un codice?

In ogni caso, una volta che hai dichiarato i componenti, li hai resi visibili, e disposti come vuoi sulla griglia, devi ora dichiarare i listener, in partica devi dichiarare PER OGNI componente, ovvero per ogni bottone, per ogni JTextField, e per ogni altro campo della tua interfaccia grafica, un diverso listener.

Stai attento che i listener per componenti diversi sono anche loro diversi, nel senso che differiscono nella sintassi, ora non mi ricordo esattamente come si dichiarano i listener per i vari componenti, ma su internet trovi facilmente tutorial su swing.

Una volta che hai dichiarato un listener per un componente, all'interno di questo listener, devi gestire l'evento che quel listener solleva, in pratica puoi vederla come se, ogni volta che premi un bottone, il programma "entra" nel listener ed esegue il frammento di codice lì contenuto.

Il programma poi si "ferma" all'interno di quel listener fintanto che l'utente non preme un nuovo bottone, in quel momento verrà chiamato un nuovo listener ed il programma entrerà nel nuovo listener, e così via.

Non esiste in SWING una funzione main alla quale ritornare.

L'unico main che scrivi (il classico main(args...)) lo devi vedere solo come una semplice sequenza di inizializzazione che viene chiamato come punto di ingresso alla tua applicazione, al quale fai solo disegnare i componenti e dichiari tutti i listener, poi swing si pone in attesa di un evento dall'utente da distribuire all'opportuno controllo.

La tua applicazione và distribuita nei vari listener.
zankyee
Prode Principiante
Messaggi: 3
Iscrizione: mercoledì 19 aprile 2017, 13:45
Sesso: Maschile

Re: [JAVA] Conversione contenuto JTextField in intero

Messaggio da zankyee »

harpefalcata [url=http://forum.ubuntu-it.org/viewtopic.php?p=4975223#p4975223][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Il codice che hai postato non serve a molto, è solo la parte che si occuperebbe difare le operazioni matematiche, qualora avesse disponibili i dati corretti.

Si vede però da quel codice, che tu usi le wrapper per fare le operazioni sui dati immessi, e questo è un primo errore, infatti i dati immessi attraverso una semplice JTextBox, sono considerati, se non sbaglio come semplici Stringhe, d'altronde è quello che dice anche il suo nome, quindi prima di ogni cosa sarebbe bene che fai un controllo e validi i dati inseriti dall'utente, per assicurarti, ad esempio che l'utente non inserisca caratteri alfabetici, ed in questo caso fai comparire un pop-up, oppure intervieni da codice in maniera "violenta" ed elimini ogni carattere inserito erroneamente, in modo da essere certo di passare alle funzioni matematiche sottostanti solo veri caratteri numerici.

Nello stesso validatore, devi poi assicurarti che venga rispettata la "naming convention" di Java, in particolare assicurati che i numeri decimali vengano inseriti usando il carattere "punto" e non "virgola" (o viceversa, ora non mi ricorda quale dei due Javacnsidera come separatore decimale), e quindi tramite una regex sostituisci il carattere separatore con quello opportuno, ti consiglio di cercare a questo scopo i metodi di manipolazione delle stringhe come split, replace, concat... .

Detto questo, arriviamo alla parte più importante, sembra che tu abbia disegnato la tua interfaccia grafica e poi hai pensato di implementarla, semplicemente scrivendo il codice del core che, nel tuo caso sono le routine matematiche.

Visto che il layout sembra fatto abbastanza bene, hai per caso utilizzato qualche applet che ti ha formattato in maniera automatica il layout? Oppure hai generato questo layout dichiarando ogni componente grafico e la sua posizione sulla griglia attraverso un codice?

In ogni caso, una volta che hai dichiarato i componenti, li hai resi visibili, e disposti come vuoi sulla griglia, devi ora dichiarare i listener, in partica devi dichiarare PER OGNI componente, ovvero per ogni bottone, per ogni JTextField, e per ogni altro campo della tua interfaccia grafica, un diverso listener.

Stai attento che i listener per componenti diversi sono anche loro diversi, nel senso che differiscono nella sintassi, ora non mi ricordo esattamente come si dichiarano i listener per i vari componenti, ma su internet trovi facilmente tutorial su swing.

Una volta che hai dichiarato un listener per un componente, all'interno di questo listener, devi gestire l'evento che quel listener solleva, in pratica puoi vederla come se, ogni volta che premi un bottone, il programma "entra" nel listener ed esegue il frammento di codice lì contenuto.

Il programma poi si "ferma" all'interno di quel listener fintanto che l'utente non preme un nuovo bottone, in quel momento verrà chiamato un nuovo listener ed il programma entrerà nel nuovo listener, e così via.

Non esiste in SWING una funzione main alla quale ritornare.

L'unico main che scrivi (il classico main(args...)) lo devi vedere solo come una semplice sequenza di inizializzazione che viene chiamato come punto di ingresso alla tua applicazione, al quale fai solo disegnare i componenti e dichiari tutti i listener, poi swing si pone in attesa di un evento dall'utente da distribuire all'opportuno controllo.

La tua applicazione và distribuita nei vari listener.
Ho creato la parte grafica usando solamente comandi ( setBounds ecc... ) , comunque grazie tante :) cerco di fare il possibile e nel caso posto i risultati :) grazie mille
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Conversione contenuto JTextField in intero

Messaggio da Zoff »

Potresti anche usare i JFormattedTextField: https://docs.oracle.com/javase/tutorial ... field.html
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: ductive e 21 ospiti