2012-06-19 2 views
5

В программе, над которой я работаю, текстовое поле должно отображать некоторый текст в какой-то момент.Как очистить строку?

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

выход JTextField. Эти строки кода находятся в методе, и когда он вызывается в первый раз, он отлично работает. Однако, когда он называется другим временем, исходный текст outputString остается. Почему это происходит, и как я могу это исправить?

Хорошо, я думаю, это происходит потому, что строки неизменяемы. Дело в том, что outputString никогда не изменяется, поэтому он по-прежнему имеет текст из вызова начального метода.

Как я могу каким-то образом изменить текст в строке?

+0

Okay, ребята, я просто попытался тот же самый ответ, который был дан мне в 5 раз. Это не работает. Я положил output.setText (""); непосредственно перед output.setText (outputString) ;, но outputString не изменяется, поэтому он все еще содержит более ранний фрагмент текста. – kullalok

+0

отправить полный код ... –

+0

«непосредственно перед выходом.setText (outputString)». Конечно, это не очистит текст, вы просто перезапишите его. Если вы хотите, чтобы текст был очищен, вы должны вызвать setText ("") ПОСЛЕ. –

ответ

4

Вы должны очистить текст от объекта JTextField. Отправка переменной в качестве аргумента с помощью setText() не связать эту переменную с объектом. Он просто копирует строку.

output.setText(""); 

Если текст является нулевым или пустым, имеет эффект просто удаление старого текста.

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#setText%28java.lang.String%29

5

Установка текста к содержимому переменной не устанавливает постоянную связь между этой переменной и это текстовое поле, если вы хотите, чтобы очистить текст, вы можете использовать

output.setText(""); 
0

Вы устанавливаете выходную строку на "" после того, как вы попытаетесь установить текст JTextField? Если это так, вы должны попытаться сделать что-то вроде этого:

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

Будет ли решить эту проблему

1

Почему это происходит?

Строка неизменяема.

Всегда существует новая ссылка на строку. Таким образом, когда вы вызываете outputString = "";, создается новая строка.

Как это исправить?

Звонок output.setText("");.

1

Что делает ваш код, сначала задает содержимое текстового поля содержимому переменной outputString в: output.setText(outputString);.

Ваша последующая строка кода не изменяет объект String, который является содержимым вашего текстового поля, а скорее задает переменную outputString для ссылки на пустую строковую переменную. Строки, неизменяемые в java, невозможно изменить в одну строковую переменную, отражающую другую.

Как заявили многие люди, вам необходимо установить содержимое текстовых полей, позвонив по телефону: jTextFieldVar.setText(""); или jTextFieldVar.setText(null);.

0

Я думаю, что вы ищете:

output.setText(""); 
2

Я думаю, вы недоразумение что-то очень важное. Строки Java неизменяемы, что означает, что вы не можете их изменить.

«Как я могу каким-то образом изменить текст в строке?»

Вы не можете. Текст в строке не может быть изменен. Это неизменно. Любое «решение», которое включает в себя изменение текста в строке, не будет работать на Java. (Понял?)

Когда вы сделаете это:

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

уступка не изменяет значение, которое отображается в текстовом поле. Он просто меняет строку, на которую ссылается локальная переменная outputString.

И когда вы это делаете:

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

не вызывает outputString изменить. Он просто меняет отображаемый текст на ничто, а затем немедленно меняет его на то, что в настоящее время относится к outputString.

Если вы хотите изменить значение, отображаемое в текстовом поле ни к чему, просто сделать это:

output.setText(""); 

Возможно другое дело, что вы ошибались в своем мышлении, что вы думаете, что это :

output.setText(outputString); 

устанавливает связь между текстовым полем output и переменной outputString ... так что, когда пользователь вводит в поле, переменная outputString волшебно обновляется. Это НЕ так. На самом деле это НЕ МОЖЕТ быть, потому что вы не можете передать адрес переменной.

Фактически, output.setText(outputString); только передает значение из outputString в текстовое поле объекта. Если и когда пользователь вводит что-то в поле, символы хранятся в другом месте и возвращаются только в ваш код ... в качестве новой строки ... когда ваш код вызывает .

0

это будет работать просто отлично.

output.setString ("");

0

Другие ответы, указывающие на то, что Строки неизменяемы, точны.

Но если вы хотите иметь функциональность «очистки строки», вы можете use a StringBuffer instead and call this on it:

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