2013-02-16 67 views
4

我想創建一個帶有內部消息的JTextField作爲deafult。但不是一個正確的文本,而是一個關於在JTextField中輸入內容的註釋。 因此,如果我鍵入jtf.getText()它將返回null或空,因爲它只是在那裏打印的註釋。當你點擊它時,它會消失,你可以寫任何你想要的東西。有沒有辦法做這樣的事情?如何在JTextField中顯示默認消息java

+0

在最新的SwingLabs,SwingX庫中查看[提示支持](http://weblogs.java.net/blog/kschaefe/archive/2010/07/15/swingx-using-promptsupport) – MadProgrammer 2013-02-16 23:28:25

+0

請參閱也[[TextPrompt]](http://stackoverflow.com/q/1805486/230513)。 – trashgod 2013-02-16 23:31:11

+1

在[文本提示](http://tips4java.wordpress.com/2009/11/29/text-prompt/)博客條目中可以找到上面鏈接到@trashgod的文本提示的更高級和更有趣的版本。 – camickr 2013-02-17 01:30:14

回答

5

我相信你想要的是input hint在文本字段中,像下面的圖片:

input hint

檢查xswingx庫,可以做到這一點。

+0

這正是我想要的:D thx,我會盡力找到它 – 2013-02-16 23:42:51

+0

發現這有點難以使用。這個提示類不是Java的API的一部分嗎?加上我想用jtextfield – 2013-02-16 23:48:19

+2

這是現在除了SwingX庫。 @GustavoBaiocchiCosta沒有套件不是標準庫的一部分。更好地下載最新版本的SwingX(恕我直言),並從內存中,它就像調用PromptSupport.setPromot(「提示」,文本框)。查看我在man部分的評論中的鏈接 – MadProgrammer 2013-02-17 02:38:01

5

一種可能的技術是首先設置默認字符串作爲文本框的文本:

JTextField myField = new JTextField("Default Text"); 

然後用FocusListener,從而當用戶把焦點中的元件,所述文本消失:

myField.addFocusListener(new FocusListener() { 
    public void focusGained(FocusEvent e) { 
     myField.setText(""); 
    } 

    public void focusLost(FocusEvent e) { 
     // nothing 
    } 
}); 

但是您必須小心:如果用戶從不將焦點放在文本字段中,getText()將返回默認字符串。因此,你最好管理一個布爾值,告訴文本字段是否有焦點。

+0

這非常有幫助。我設法解決我的問題。非常感謝! – 2013-02-17 00:21:32