PDA

View Full Version : [java] fare immettere ad un utente un valore


giova22
06-10-2005, 21:23
Ciao

Ho fatto un frame in java, con pulsanti e tutto quanto, compreso l algoritmo.

Mi rimane solo una cosa: devo fare inserire all utente un valore, e mi piacerebbe che a tastiera lo immettesse in una casella e da li il programma lo elaborasse e facesse alla fine apparire il risultato dell elaborazione nella casella di immissione. C' è un modo?

Uso netbeans 4.1

fbcyborg
06-10-2005, 22:52
certo,
i parametri li prendi dai campi di testo (x esempio dai JTextField) tramite i metodi getText(), e te li casti secondo le tue esigenze. Elabori i dati di cui ha fatto il get e poi il risultato lo metti in un controllo apposito per esso con un metodo del tipo setText().

giova22
07-10-2005, 08:45
Ok, grazie mille per la risposta.

Oggi pomeriggio provo, e se ho qualche dubbio, ti disturberò ancora.......

Ciao

giova22
07-10-2005, 15:41
certo,
i parametri li prendi dai campi di testo (x esempio dai JTextField) tramite i metodi getText(), e te li casti secondo le tue esigenze. Elabori i dati di cui ha fatto il get e poi il risultato lo metti in un controllo apposito per esso con un metodo del tipo setText().


Ciao

Ho provato ad implementare le funzioni da te citate, ma non so dove scrivere quelle funzioni.

Mi puoi spiegare leggermente meglio?

Grazie, scusa, ma sono niubbo ancora

fbcyborg
07-10-2005, 20:16
Dunque...
i vari getText() devi associarli ad uno o più eventi.
Se hai già confidenza con cose di questo tipo, ti dico subito che devi effettuare queste operazioni all'interno di ActionPerformed, per esempio legati a dei JButton...
Del tipo che ad un JButton associ un evento e lo programmi per fare i getText().
Dopo di che, sempre all'interno di questo ActionPerformed invochi le funzioni di altre classi che ti servono all'elaborazione...

se invece sei a digiuno di questo, fammelo sapere che ti posto un pezzo di codice

PS: io però non uso netbeans...

franksisca
07-10-2005, 21:01
io ti consiglio questo:

JButton button=new JButton("Inserisci dati");
button.addActionListener(new Azione());
...
...
...
class Azione implements ActionListener{
public void actionPerformed(Object arg0){//non ricordo bene se riceve un object o un Event
String valore=JOptionPane.showInputDiaog(null,"inserisci dati");
//valore è quello che ti restituisce, e forse è Object....
}

fbcyborg
07-10-2005, 22:21
il metodo ActionPerformed è così:

class Azione implements ActionListener{
public void actionPerformed(java.awt.event.ActionEvent e) {
// Quà dentro fai i getText() e invochi i metodi di elaborazione
// successivamente puoi fare i setText()
}
}

franksisca
08-10-2005, 00:42
.... :rolleyes: :( l'avevo detto che non mi ricordavo........

giova22
08-10-2005, 12:13
allora comincio a capirci qualcosa....

Ecco come banalmente dovrebbe essere il mio programma

http://img228.imageshack.us/img228/9770/java4lp.gif


Nel jtextfield l utente dovrebbe inserire il valore, e quando preme il bottone (jbutton) dovrebbe attivarsi il tutto. Una volta finita l elaborazione il risultato dovrebbe ricomparire in Jtextfield (Ovviamente cancellando il valore di prima). In genrere in j text field ci dovrebbe essere solamente un valore (int) a 2 cifre massimo, quindi niente testi impegnativi o cose simili.

Ora dovrei quindi nel codice sorgente di jbutton (che ho già impostato in netbeans come (mouseclicked, cioè se ci clicco col mouse si attiva il suo codice sorgente).

Dicevo, ora nel codice sorgente del jbutton dovrei mettere quel class Azione implements Actionlistener?

Ma la classe azione dove la devo definitre?

Devo fare una classe Azione.java?

E come faccio a mettere che mi deve fare il getText in quel jtextfield?

Se metto solo getText() non sa dove prenderlo. E una volta fatto il gettext come faccio a dirgli di mettere il valore in una data variabile?


Grazie ad entrambi che mi state aiutando

fbcyborg
08-10-2005, 12:40
Dicevo, ora nel codice sorgente del jbutton dovrei mettere quel class Azione implements Actionlistener?

dovrai fare: jButton.addActionListener(new Azione());


Ma la classe azione dove la devo definitre?
Devo fare una classe Azione.java?


La classe azione la puoi definire all'interno del file che contiene la tua gui. In un file .java si possono definire più classi.
Come dice franksisca puoi scrivere la tua classe in quel modo.. scrivendo :
class Azione implements ActionListener ..... ecc.
Scrivila in fondo alla tua classe della gui.


E come faccio a mettere che mi deve fare il getText in quel jtextfield?

Se metto solo getText() non sa dove prenderlo. E una volta fatto il gettext come faccio a dirgli di mettere il valore in una data variabile?


Semplicissimo:
Supponiamo che la tua casella di testo si chiami jTextField...
Nell'actionPerformed scriverai:

String s = jTextField.getText(); // memorizzo nella variabile
String risultato=MiaClasseDiElaborazione.metodoCheElabora(s);
jTextField.setText(risultato);

Chiaramente se stai trattando dei numeri devi effettuare cast opportuni.
In caso, posta il codice che facciamo delle correzioni se necessarie!

giova22
08-10-2005, 14:33
sto procedendo grazie a voi.......

Il mio programmozzo si sta leggermente e lentamente ampliando.

Ora però sono in un punto in cui non riesco ad andare avanti perchè in compilazione ho questo errore:

non-static method getacceso() cannot be referenced from a static context

e si riferisce a questa linea di codice
boolean giovanni = PannelloPrincipale.getacceso();

ecco invece PannelloPrincipale.getacceso come è:

public boolean getacceso()
{
return acceso;
}

non capisco ora dove sia l errore. Entrambe le funzioni sono nella stessa clasee.



Grazie ancora...

Ah ecco acceso come l ho inizializzato:

public boolean acceso = false;

fbcyborg
08-10-2005, 14:48
scrivi il metodo nel seguente modo:

public static boolean getacceso()
{
return acceso;
}

franksisca
08-10-2005, 15:01
scrivi il metodo nel seguente modo:

public static boolean getacceso()
{
return acceso;
}
problemi di accessom, ti dice che l'errore è perche il metodo e dinamico e tu lo richiami come statico.

giova22
08-10-2005, 15:04
ancora ho lo stesso errore anche se metto static

edit: codice inutile ai fini della leggibilità, rimosso


mah questo errore non mi è mai capitato

franksisca
08-10-2005, 15:19
allora, prova a dichiarare la variabile static, anche se dovrai cambiare qualcosa, a prop, che IDE usi???
Prova Eclipse, che con questi problemi ti dà una grossa mano.

giova22
08-10-2005, 15:34
allora, prova a dichiarare la variabile static, anche se dovrai cambiare qualcosa, a prop, che IDE usi???
Prova Eclipse, che con questi problemi ti dà una grossa mano.

Dichiarare la variabile static come si fa?

Come IDE uso NetBeans, mi piace abbastanza. Avendo già altri programmi con netbeans cercherei per ora di non cambiare ide.

In ogni caso sto scaricando eclipse, ma ho solo un 56k.........

Ma perchè da quel problema in compilazione?

franksisca
08-10-2005, 16:01
per mettere la variabile static basta fare public static boolean acceso=false;

fbcyborg
10-10-2005, 00:25
ma allora? ci sei riuscito?