2011-06-18 57 views
4

我正在開發黑莓應用程序。我想在用戶開始鍵入之前在TextField中顯示一個提示文本。當用戶開始鍵入它時應該消失,並且當TextField中有0個字符時它應該顯示出來。有沒有人實現過這個功能?請分享。TextField - 在用戶開始輸入文字前顯示提示

+2

這通常稱爲「佔位符」或「水印」。 –

回答

4

這裏是我的嘗試 - 它是一個完整的代碼,你可以運行它JDE 6.x.

當你輸入的東西,灰色的字符串 「搜索」 將消失:

screenshot

的border.png:

border.png

在src \ mypackage中\ MyEdit.java:

package mypackage; 

import net.rim.device.api.system.*; 
import net.rim.device.api.ui.*; 
import net.rim.device.api.ui.component.*; 
import net.rim.device.api.ui.container.*; 
import net.rim.device.api.ui.decor.*; 

public class MyEdit extends UiApplication { 
    public static void main(String args[]) { 
     MyEdit app = new MyEdit(); 
     app.enterEventDispatcher(); 
    } 

    public MyEdit() { 
     pushScreen(new MyScreen()); 
    } 
} 

class MyScreen extends MainScreen { 
    Border myBorder = BorderFactory.createBitmapBorder( 
     new XYEdges(20, 16, 27, 23), 
     Bitmap.getBitmapResource("border.png")); 

    BasicEditField myField = new BasicEditField(TextField.NO_NEWLINE) { 
     protected void paint(Graphics g) { 
      if (getTextLength() == 0) { 
       g.setColor(Color.LIGHTGRAY); 
       g.drawText("Search", 0, 0); 
      } 

      g.setColor(Color.BLACK); 
      super.paint(g); 
     } 
    }; 

    public MyScreen() { 
     myField.setBorder(myBorder); 
     setTitle(myField); 
    } 
} 
+0

thanx這是好的,但... TextField.NO_NEWLINE不工作,它是換行到新行...如何阻止此? – Hitarth

+0

1種方法:覆蓋公共無效setText(字符串文本)以「」代替「\ n」 –

7
protected void paint(Graphics g) 
{ 
    if(super.getText().length() == 0) 
    { 
     g.setColor(Color.GRAY); 
     g.drawText("MMYY", 0, 0); 
    } 
    g.setColor(Color.BLACK); 
    super.paint(g); 
}; 
+0

waah dhiral ... su jawab che !!!!? – mayuur