2011-02-13 156 views
0

想知道是否可以通過打印來初始化文本字段(這部分我知道該怎麼做),但是打印後突出顯示,然後在用戶開始輸入時消失?即使沒有突出顯示,你怎麼能讓字段初始化爲「請輸入你的電話號碼」,然後讓它消失,以便用戶不必刪除文本?JTextField焦點問題

回答

5

還有一個辦法,用focusGained事件。 只是標記的初始文本:

String initialText = "Enter your story here..."; 
    ... 
    jTextArea1.setText(initialText); 
    ... 

    private void focusGained(java.awt.event.FocusEvent evt) { 
     if (jTextArea1.getText().equals(initialText)) { 
      //jTextArea1.setSelectionStart(0); 
      //jTextArea1.setSelectionEnd(jTextArea1.getText().length()); 
      jTextArea1.selectAll(); 
     } 
    } 

這樣當用戶鍵入的東西在jTextArea1的初始文本將立即取代。

5
  • 與像一些已知的文字初始化JTextFiled例如「請輸入您的手機號碼」
  • 實施FocusListener
  • 在focusGained()檢查JTextField的情況下,看它是否有已知的文本,如果它清除文本;如果不是,則什麼也不做。

下面是一個代碼示例

final String INITIAL_TEXT = "Please enter your ph. number"; 
    final JTextField textField = new JTextField(INITIAL_TEXT); 
    textField.addFocusListener(new FocusListener() { 

     @Override 
     public void focusGained(FocusEvent e) { 
      if (textField.getText().equals(INITIAL_TEXT)) { 
       textField.setText(""); 
      } 

     } 

     @Override 
     public void focusLost(FocusEvent e) { 

     } 
    }); 
+0

哇靠。謝謝!對不起,但是@override是什麼? – unit 2011-02-13 20:46:42

+0

這是一個註釋。這是它的文檔。 http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Override.html – 2011-02-13 20:48:44

+0

嗯....我想寫一個程序來獲取文本字段中的名稱,實際上,當我在場上沒有名字而失去焦點時,我應該提示一個名字。現在,當我按照上面的建議進行操作時,我的組合框中失去了功能(但我的JList仍然正常工作,就像我的複選框一樣)。那是什麼?我有這個編碼爲我的焦點丟失: – unit 2011-02-13 21:00:05

2

focusLost如果用戶沒有輸入任何內容,將初始文本放回原位是很好的可用性。像這樣:

public void focusLost(FocusEvent e) 
{ 
    // If the field is empty, set the default text when losing focus. 
    if (inputField.getText().isEmpty()) 
    { 
     inputField.setText(INITIAL_TEXT); 
    } 
} 

或者,如果你不想使用focusLost方法,你可以創建一個內部類MyFocusListener擴展FocusAdapter,這樣你只需要實現您要使用的方法。

private class MyFocusListener extends FocusAdapter 
{ 
    public void focusGained(FocusEvent e) 
    { 
     // do your magic! 
    } 

    // ignore the focusLost method 
} 
-1
public boolean isCorrect() { 
    data = new String[6]; 
    for (int i = 0; i < informationLabel.length; i++) { 
     if (i == 0) { 
      if (!informationTextField[i].getText().equals("")) { 
       data[i] = informationTextField[i].getText(); 
      } 
      else 
       return false; 
     } 
     if (i == 1 || i == 2) { 
      if (informationPasswordField[i - 1].getText().equals("")) 
       return false; 
     } 
     if (i == 3 || i == 4 || i == 5 || i == 6) { 
      if (!informationTextField[i - 2].getText().equals("")) { 
       data[i - 1] = informationTextField[i - 2].getText(); 
      } 
      else 
       return false; 
     } 
    } 
    return true; 
}