2012-06-19 56 views
5

在我正在編寫的程序中,文本字段必須在某個點顯示一些文本。如何清除字符串?

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

輸出是一個JTextField。這些代碼行在一個方法中,並且當它第一次被調用時,它可以很好地工作。但是,當它被再次調用時,原始的outputString文本仍然存在。爲什麼會發生這種情況,我該如何解決?

好吧,我認爲這是因爲字符串是不可變的。事情是,outputString永遠不會改變,所以它仍然有來自初始方法調用的文本。

我如何以某種方式更改字符串中的文本?

+0

好球員,我只是去嘗試這是給我5次同樣的回答。它不起作用。我把output.setText(「」);緊接在output.setText(outputString)之前;但outputString不會更改,因此它仍包含較早的塊文本。 – kullalok

+0

發佈完整代碼... –

+0

「緊接在output.setText(outputString)之前」。當然,這不會清除文本,你只是覆蓋它。如果你想清除文本,你必須調用setText(「」)AFTER。 –

回答

5

設置文本的變量的內容並沒有設置一個變量,而該文本字段之間永久的關係,如果你想清除文本,你可以使用

output.setText(""); 
0

您是否在嘗試設置JTextField的文本後將輸出字符串設置爲「」?如果是這樣,你應該嘗試做這樣的事情:

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

將解決這個問題

1

爲什麼會出現這種情況?

字符串是不可變的。

總是有一個新的字符串引用。因此,當您撥打outputString = "";時,會創建新的字符串。

我該如何解決?

請致電output.setText("");

1

您的代碼正在做什麼,首先將文本字段的內容設置爲您的outputString變量的內容:output.setText(outputString);

您的後續代碼行不會更改字符串對象,它是您的文本字段的內容,而是將您的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傳遞給文本框對象。如果當用戶在框中輸入某些東西時,這些字符將存儲在其他地方,並且只能返回到您的代碼中... 作爲新的字符串 ...當您的代碼調用output.getText()時。

0

這將工作得很好。

output.setString(「」);