TextField — показать подсказку, прежде чем пользователь начнет вводить текст

Я разрабатываю приложение Blackberry. Я хочу показать текст подсказки в TextField до того, как пользователь начнет печатать. Когда пользователь начнет печатать, он должен исчезнуть, а когда в TextField будет 0 символов, он должен появиться. Кто-нибудь уже реализовал это? Тогда, пожалуйста, поделитесь.


person Dhruv Mevada    schedule 18.06.2011    source источник
comment
Это часто называют заполнителем или водяным знаком.   -  person Matt Ball    schedule 18.06.2011


Ответы (2)


Вот моя попытка - это полный код, вы можете запустить его в JDE 6.x.

Когда вы что-то набираете, серая строка «Поиск» исчезает:

скриншот

Граница.png:

border.png

Источник\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);
    }
}
person Alexander Farber    schedule 18.06.2011
comment
Спасибо, все в порядке, но... TextField.NO_NEWLINE не работает и переносится на новую строку... как это остановить? - person Hitarth; 23.11.2011
comment
1 способ: переопределить public void setText(String text) для замены \n на - person Alexander Farber; 23.11.2011

вот реализация в методе paint()

String test = super.getText();
        if ( test == null || test.length() < 1 ) {
            graphics.setColor( 0x00a0a0a0 );
            graphics.drawText(hint, 0, 0);
        }

а вот исходник благодаря peter_strange http://supportforums.blackberry.com/t5/Java-Development/Prompt-hint-place-holder-text-on-a-Numeric-Password-edit-field/mp/990817#M151704

person Dhruv Mevada    schedule 18.06.2011