我正在开发一个黑莓应用程序。我想在用户开始输入之前在 TextField 中显示提示文本。当用户开始输入时,它应该消失,当 TextField 中有 0 个字符时,它应该显示出来。有人实现了吗?那么请分享。
问问题
4401 次
3 回答
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);
};
于 2011-09-14T09:56:16.220 回答
4
这是我的尝试——它是一个完整的代码,您可以在 JDE 6.x 中运行它。
当您键入内容时,灰色字符串“搜索”将消失:
边框.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);
}
}
于 2011-06-18T09:12:11.367 回答
2
这是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
于 2011-06-18T06:35:05.143 回答