2011-06-18 11 views
4

Blackberryアプリケーションを開発しています。私は、ユーザーが入力を開始する前にTextFieldにヒントテキストを表示したいと思います。ユーザーが入力を開始すると消えてしまいます。また、TextFieldに0文字が表示されたら表示されるはずです。ここTextField - ユーザーがテキストを入力する前にヒントを表示します

+2

これはしばしば「プレースホルダ」または「透かし」と呼ばれます。 –

答えて

4

をpeter_strangeするソースのおかげで私の試みです - それは完全なコードである、あなたはそれを実行することができます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

これは問題ありませんが、TextField.NO_NEWLINEは機能していません。新しい行に折り返します...これをやめる方法は? – Hitarth

+0

1ウェイ:オーバーライドpublic void 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

関連する問題