2011-06-18 55 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