我拿了一个自定义文本框图片,在该文本框中我想显示“输入密码”,当我专注于该文本框字段并输入任何字符集时,它会转换为星号符号,如密码编辑字段。
我想要如下图像:
答案 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显示完整实现的答案也很好。