2011-05-27 60 views

回答

4

在這一行:

add(jLabel1); 

要添加到GUI的對象這是jLabel1的指的是。您不會將jLabel1 變量本身添加到GUI。

在這一行:

jLabel1 = jLabel2; 

你改變這種jLabel1的所指對象。這對已添加到GUI的原始對象具有絕對沒有影響

的解決方案是按camickr的答案(1+)

+0

我修復了這個問題 1.removing jLabel1 2.jLabel1 = jLabel2; 3.adding jLabel1 4.repainting – 2011-05-27 04:21:49

+0

@Mohammad沒有理由在這種情況下重新分配jLabel1 - 刪除jLabel1 - >添加jLabel2。在大多數情況下不需要手動重繪。 – 2011-05-27 05:24:13

+0

jLabel2是一個本地和臨時對象,這就是爲什麼我這樣做 – 2011-05-29 15:52:22

6
jLabel1 = jLabel2; 

這不會將標籤添加到框架。

變量包含對對象的引用。在賦值語句變量jLabel1和jLabel2都包含對同一對象的引用之後。由於您的第二個標籤尚未添加到框架中,因此這兩個變量都只是引用內存中的對象。

你可以這樣做:

jLabel1.setText(jLabel2.getText()); 

其實真的是沒有必要的第二個標籤存在。如果你想改變的GUI標籤上的文字,你會只是做:

jLabel1.setText("some text"); 
+5

+1不過,我覺得解釋應該擴大,以什麼'X = y'確實(給出的問題的情況下)。 – 2011-05-27 02:36:09