2012-06-19 2 views
5

In un programma su cui sto lavorando, un campo di testo deve visualizzare del testo ad un certo punto.Come cancellare una stringa?

output.setText(outputString); 
outputString = ""; 

output è un campo JText. Queste linee di codice sono in un metodo e quando viene chiamata la prima volta, funziona perfettamente. Tuttavia, quando viene chiamato un'altra volta, rimane il testo originale di outputString. Perché succede e come posso risolverlo?

Ok, penso che accada perché le stringhe sono immutabili. Il fatto è che outputString non cambia mai, quindi ha ancora il testo della chiamata al metodo iniziale.

In che modo, in qualche modo, cambio il testo nella stringa?

+0

Okay ragazzi, ho appena provato la stessa risposta che mi è stata data 5 volte. Non funziona. Metto output.setText (""); immediatamente prima di output.setText (outputString) ;, ma outputString non cambia, quindi contiene ancora il pezzo precedente di testo. – kullalok

+0

post codice completo ... –

+0

"immediatamente prima di output.setText (outputString)". Ovviamente questo non cancellerebbe il testo, lo stai solo sovrascrivendo. Se si desidera cancellare il testo, è necessario chiamare setText ("") DOPO. –

risposta

5

Impostazione del testo per il contenuto della vostra variabile non instaurare un rapporto permanente tra la variabile e che campo di testo, se si vuole cancellare il testo, è possibile utilizzare

output.setText(""); 
0

Stai impostando la stringa di output su "" dopo aver provato a impostare il testo del JTextField? Se è così si dovrebbe cercare di fare qualcosa di simile:

output.setText(""); 
0
output.setText(""); 

risolverà questo problema

1

Perché accade questo?

Le stringhe sono immutabili.

C'è sempre un nuovo riferimento alla stringa. Pertanto, quando si chiama outputString = "";, viene creata la nuova stringa.

Come posso risolvere il problema?

Chiama output.setText("");.

1

Ciò che il codice sta facendo, è innanzitutto l'impostazione del contenuto del campo di testo sul contenuto della variabile outputString in: output.setText(outputString);.

La riga di codice seguente non modifica l'oggetto String, che è il contenuto del campo di testo, ma imposta la variabile outputString per fare riferimento alla variabile stringa vuota. Le stringhe essendo immutabili in java, è impossibile che le modifiche a una variabile stringa si riflettano su un'altra.

Come un numero di persone ha dichiarato, è necessario impostare il contenuto dei campi di testo chiamando: jTextFieldVar.setText(""); o jTextFieldVar.setText(null);.

0

penso che quello che stai cercando è:

output.setText(""); 
2

Penso che si sta equivoco qualcosa di molto importante. Le stringhe Java sono immutabili, il che significa che non è possibile cambiarle.

"Come posso, in qualche modo, modificare il testo nella stringa?"

Non è possibile. Il testo nella stringa non può essere modificato. È immutabile. Qualsiasi "soluzione" che implica la modifica del testo in una stringa NON FUNZIONERÀ in Java. (Capito?)

Quando si esegue questa operazione:

output.setText(outputString); 
outputString = ""; 

l'assegnazione non cambia il valore visualizzato nel campo di testo. Cambia semplicemente la stringa a cui fa riferimento la variabile locale outputString.

E quando si esegue questa operazione:

output.setText(""); 
output.setText(outputString); 

non causa outputString per cambiare. Cambia semplicemente il testo visualizzato su nulla e poi lo cambia immediatamente a qualsiasi cosa a cui si riferisce attualmente lo outputString.

Se si desidera modificare il valore visualizzato nel campo di testo a nulla, basta fare questo:

output.setText(""); 

Forse l'altra cosa che hai sbagliato nel vostro pensiero è che si pensa che questo :

output.setText(outputString); 

imposta una relazione tra il campo di testo output e la variabile outputString ... in modo tale che quando l'utente digita nel campo, la variabile outputString è magicamente aggiornati. NON è così. In effetti, NON può essere così, perché non puoi passare l'indirizzo della variabile.

Infatti, output.setText(outputString); appena passa il valore di outputString all'oggetto casella di testo. Se e quando l'utente digita qualcosa nella casella, i caratteri vengono memorizzati da qualche altra parte e restituiti al codice solo ... come una nuova stringa ... quando il codice chiama output.getText().

0

questo funzionerà perfettamente.

output.setString ("");

0

Altre risposte che indicano il fatto che le stringhe sono immutabili sono accurate.

Ma se si vuole avere la funzionalità di "eliminazione di uno String", è possibile use a StringBuffer instead and call this on it:

stringBuffer.delete(0, stringBuffer.length());