2017-02-26 69 views
-3

做一個簡單的代碼所以,我在我的程序中爲JTextfields,但如果我檢查它是否爲空,它會使我的代碼更長,而且效果不佳。有沒有比這更簡單的代碼?我想從這個

if (t_ipA.getText() == null || t_ipA.getText().trim().isEmpty()) { 
       // your code here 
      } 

注:我有:t_ipA .. t_ipD,t_maskA .. t_maskD 有是八個JTextField的。

-------編輯--------- 好吧,現在我已經解決了我自己的問題。

這是代碼,我已經使用過: 這是方法:

private boolean isEmpty(JTextField f) { 
    if (f==null || f.getText().trim().isEmpty()) { 
     f.setText("0"); 
    } 
    return f.getText().trim().isEmpty(); 

} 

,這是的ActionListener:

isEmpty(t_ipA); 
isEmpty(t_ipB); 
isEmpty(t_ipC); 
isEmpty(t_ipD); 

isEmpty(t_maskA); 
isEmpty(t_maskB); 
isEmpty(t_maskC); 
isEmpty(t_maskD); 

不過,我仍然在尋找使用數組列表使這個代碼更簡單。

感謝QBrute,JBNizet和Mureinik

+0

編寫一個方法,在每個文本字段中執行檢查並調用此方法。 – QBrute

+0

getText()永遠不會返回null。 –

+0

嗯,你能告訴我這個例子嗎?我是編程新手。謝謝 –

回答

0

首先,你可以定義一個方法來封裝檢查:

private boolean isEmpty(JTextField f) { 
    return f.getText() == null || f.getText().trim().isEmpty(); 
} 

然後,你可以放置在列表或陣列中的所有的領域,使用Java 8的流媒體API將條件應用於所有這些API。例如:

List<JTextFeild> fields = Arrays.asList(t_ipA, t_ipB /* etc... */); 
if (fields.stream().allMatch(this::isEmpty)) { 
    // your code here... 
} 
+0

第二個代碼給我錯誤:「類型列表不是通用的,它不能用參數參數化」。我已經添加了java.awt.List; java.util.arrays –

+1

右邊的List類在java.util中。不在java.awt中。 –

+0

好的JB Nizet,但現在的方法allMatch ....不適用於(this :: isEmpty),並且新的動作偵聽器沒有定義(JTextfield),這裏適用 –