我有兩個JLabel創建並添加其中的一個我的JFrame,但是當我給你另外一個對添加了一個JFrame中不更新爲什麼不`jLabel1 = jLabel2`更改顯示的值?
add(jLabel1);
jLabel1 = jLabel2;
我怎麼能解決這個問題?
我有兩個JLabel創建並添加其中的一個我的JFrame,但是當我給你另外一個對添加了一個JFrame中不更新爲什麼不`jLabel1 = jLabel2`更改顯示的值?
add(jLabel1);
jLabel1 = jLabel2;
我怎麼能解決這個問題?
在這一行:
add(jLabel1);
要添加到GUI的對象這是jLabel1的指的是。您不會將jLabel1 變量本身添加到GUI。
在這一行:
jLabel1 = jLabel2;
你改變這種jLabel1的所指對象。這對已添加到GUI的原始對象具有絕對沒有影響。
的解決方案是按camickr的答案(1+)
jLabel1 = jLabel2;
這不會將標籤添加到框架。
變量包含對對象的引用。在賦值語句變量jLabel1和jLabel2都包含對同一對象的引用之後。由於您的第二個標籤尚未添加到框架中,因此這兩個變量都只是引用內存中的對象。
你可以這樣做:
jLabel1.setText(jLabel2.getText());
其實真的是沒有必要的第二個標籤存在。如果你想改變的GUI標籤上的文字,你會只是做:
jLabel1.setText("some text");
+1不過,我覺得解釋應該擴大,以什麼'X = y'確實(給出的問題的情況下)。 – 2011-05-27 02:36:09
我修復了這個問題 1.removing jLabel1 2.jLabel1 = jLabel2; 3.adding jLabel1 4.repainting – 2011-05-27 04:21:49
@Mohammad沒有理由在這種情況下重新分配jLabel1 - 刪除jLabel1 - >添加jLabel2。在大多數情況下不需要手動重繪。 – 2011-05-27 05:24:13
jLabel2是一個本地和臨時對象,這就是爲什麼我這樣做 – 2011-05-29 15:52:22