文本框值转换为星号符号,如密码编辑字段

时间:2011-08-12 06:51:19

标签: blackberry

我拿了一个自定义文本框图片,在该文本框中我想显示“输入密码”,当我专注于该文本框字段并输入任何字符集时,它会转换为星号符号,如密码编辑字段。

我想要如下图像:

password Box

2 个答案:

答案 0 :(得分:2)

我认为只有覆盖paint(..)的{​​{1}}才有可能。可能是以下步骤可以实现所需的行为:

  • 将原始文本存储到本地变量。
  • 根据焦点状态,原始文本等生成假文本。
  • 调用Editfield,它会使用假文字绘制字段。
  • 使用super.paint(..)重新设置原始文字。


实施草案:

setText(..)


上面的代码不会绘制边框。


我们需要为您在评论中提到的问题设置单色字体。以下是示例代码:

class MyEditField extends EditField {
    private final static String INIT_TEXT = "Enter Password";

    protected void paint(Graphics graphics) {
        String originalText = getText();
        String fakeText = originalText;

        if (originalText.equalsIgnoreCase("")) {
            fakeText = isFocus() ? originalText : INIT_TEXT;
        } else {
            fakeText = "";
            for (int i=0;i<originalText.length();i++) {
                fakeText += '*';
            }
        }

        setText(fakeText);
        super.paint(graphics);          
        setText(originalText);
    }
}

答案 1 :(得分:1)

如果我理解正确,您需要使用PasswordEditField

像任何LabelField一样实现它,它将满足您的需求。


我看到你也想要背景文本 - 我会在paint()方法中使用drawText()来绘制它。另一个使用EditField显示完整实现的答案也很好。