簡體   English   中英

有關Java中的JTextField的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM