【问题标题】:TextField - show hint before user starts typing textTextField - 在用户开始输入文本之前显示提示
【发布时间】:2011-09-17 15:32:38
【问题描述】:

我正在开发一个黑莓应用程序。我想在用户开始输入之前在 TextField 中显示提示文本。当用户开始输入时,它应该消失,当 TextField 中有 0 个字符时,它应该显示。有人实现了吗?那么请分享。

【问题讨论】:

  • 这通常被称为“占位符”或“水印”。

标签: blackberry textfield hint


【解决方案1】:
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);
};

【讨论】:

    【解决方案2】:

    这是我的尝试——它是一个完整的代码,您可以在 JDE 6.x 中运行它。

    当你输入内容时,灰色字符串“Search”会消失:

    边框.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);
        }
    }
    

    【讨论】:

    • thanx 很好,但是... TextField.NO_NEWLINE 不起作用,它会换行...如何阻止这种情况?
    • 1 方式:覆盖 public void setText(String text) 将“\n”替换为“”
    【解决方案3】:

    这是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/m-p/990817#M151704

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 2012-07-22
      • 2017-08-09
      • 2013-09-22
      • 2020-09-05
      • 2016-09-26
      • 2013-12-16
      相关资源
      最近更新 更多