[英]A Question about JTextField in Java
在運行我編寫的Java類時,我遇到了一個小問題,盡管設計非常簡單。 我創建了一個JPanel,並在其上添加了四個JTextField,並且還向該JPanel附加了一個按鈕。 然后,將一個ActionListener關聯到被按下的按鈕。 代碼如下:
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if (imageIdField.getText() == "" &&
captionField.getText() == "" &&
creditField.getText() == "" &&
titleField.getText()== "")
{
mediaXML = "";
results.clear();
results.put("error1", "more");
}
else
{ ....
}
}
奇怪的是,在我按下OK按鈕之后,我確實在這四個JTextField中輸入了文本,但是它仍然會落在IF分支中,就好像我沒有在這四個字段中的任何一個中輸入任何文本一樣。 我已經調試了一段時間,但沒有任何線索。 誰能給我一些提示,例如.getText()==“”是否是測試無輸入的有效方法?
提前致謝!
如前所述,使用==
是不正確的。 為了提高可讀性,請嘗試:
field.getText().isEmpty()
要么
field.getText().trim().isEmpty()
通常,在String
或其他大多數東西上使用==
是個壞主意。 它檢查對象是完全相同的實例,而不是它們具有相同的值。 "" != new String("")
。
field.getText().equals("")
也許更好:
field.getText().isEmpty()
使用getText().equals("")
代替==
使用==檢查內存中是否存在相同的對象,並使用.equals(“ YOUR STRING”)檢查對象的內容是否相同。
您應該使用.equals 。 另外,您可能想要執行以下操作:
imageField.getText().trim().length() == 0 //The same for the others
要么
imageField.getText().trim().isEmpty() //The same for the others
如果要確保用戶實際寫了一些字符而不是空白。
==
僅檢查左側和右側是否引用對象的完全相同的實例。 並且由於""
轉換為new String("")
,所以如果將其與已經存在的字符串進行比較,它將始終返回false。
如果要比較一個類的兩個實例是否具有相同的狀態,則需要使用equals()
。 在您的情況下*.getText().equals("")
。 一種更優雅的方法是使用String類的isEmpty()
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.