2014-01-31 62 views
0

我使用JLabels編寫了一種購物清單,我有一個可以從列表中刪除項目的按鈕。我編寫了一些代碼,以便縮小差距,並且所有的JLabel都向上移動,直到所有的空間都被填滿。問題是我必須按下按鈕才能移動每個JLabel。我想知道是否有人能告訴我如何使用while循環在循環中運行代碼,直到什麼也沒有發生(這將意味着不存在任何差距,一切都在頂部)如何讓循環繼續,直到沒有任何事情發生?

String remove1 = ListSlot1.getText(); 
String remove2 = ListSlot2.getText(); 
String remove3 = ListSlot3.getText(); 

if(remove1=="") 
{ 
ListSlot1.setText(ListSlot2.getText()); 
ListSlot2.setText(""); 
} 
if(remove2=="") 
{ 
ListSlot2.setText(ListSlot3.getText()); 
ListSlot3.setText(""); 
} 
if(remove3=="") 
{ 
ListSlot3.setText(ListSlot4.getText()); 
ListSlot4.setText(""); 
} 
+1

我真的不確定你想要做什麼,但也許你想要使用的是一個JList。考慮澄清你的問題。 –

+0

您應該使用像JList這樣的列表控件來管理實際列表,而不是通過繪製一堆標籤並手動移動它們來模擬它們。 *不要重新發明輪子。* – ADTC

+0

我不知道如何運行一段時間,當沒有任何變化時它停下來。我的循環只是不斷地用「」代替「」,它會永遠做到這一點,我不知道如何阻止它 – reca117

回答

1

首先remove3==""是不是如何在Java中進行比較String

你可以使用

if (remove3 == null || remove3.trim().isEmpty()) {...} 

if (remove3 == null || remove3.trim().equals("")) {...} 

,而不是...

其次,你應該使用JList代替。請參閱How to use Lists瞭解更多詳情。

0
boolean changed = false; 
do { 
    do stuff; 
    if (something has changed) { 
    changed = true; 
    } 
} while (changed); 
相關問題