Blackberry-自定义编辑字段光标
我正在为我的BlackBerry项目创建一个搜索框,但BlackBerry似乎没有用于创建单行EditField的API。我通过扩展BasicEditField和覆盖layout和paint等方法创建了一个自定义字段。在函数体中,我用getPreferredWidth()和getPreferredHeight()绘制了一个矩形。但光标显示在EditField的默认左上角位置。谁能告诉我怎样才能把光标画在文本所在的位置?也就是说,在编辑字段中间调用DrutTrk()。 < p>我没有得到你的问题。p>Blackberry-自定义编辑字段光标,blackberry,java-me,Blackberry,Java Me,我正在为我的BlackBerry项目创建一个搜索框,但BlackBerry似乎没有用于创建单行EditField的API。我通过扩展BasicEditField和覆盖layout和paint等方法创建了一个自定义字段。在函数体中,我用getPreferredWidth()和getPreferredHeight()绘制了一个矩形。但光标显示在EditField的默认左上角位置。谁能告诉我怎样才能把光标画在文本所在的位置?也就是说,在编辑字段中间调用DrutTrk()。 < p>我没有得到你的问题。
您可以在重写editField的onFocus方法时,将光标绘制在需要它的位置
protected void onFocus(int direction) {
super.onFocus(direction);
this.setCursorPosition(this.getTextLength());
invalidate();
}
获得焦点后,字段将光标定位在文本的末尾。editField具有setCursorPosition和getTextLength
希望有帮助。谢谢你们,我从黑莓杂志上得到了一个很好的解决方案
公共类滚动搜索框扩展了HorizontalFieldManager
{
私人内部管理器宽度;
私人内部管理权;
公共滚动搜索框()
{
超级(管理器。无水平滚动);
searchEdit=newbasiceditfield(){
public int getPreferredHeight()
{
返回ret;
}
public int getPreferredWidth()
{
返回ret;
}
公共空间涂料(图g)
{
getManager().invalidate();
超级油漆(g);
}
};
HorizontalFieldManager hfm=新的HorizontalFieldManager(Manager.HORIZONTAL\u滚动)
{
公共空隙子布局(整幅宽度、整幅高度)
{
if(managerWidth==0){
managerWidth=searchEdit.getPreferredWidth();
}
if(managerHeight==0){
managerHeight=searchEdit.getPreferredHeight();
}
超级。次级布局(经理宽度、经理宽度);
setExtent(managerWidth、managerWight);
}
公共空间涂料(图g){
超级油漆(g);
}
};
searchEdit.setMaxSize(70);
hfm.add(searchEdit);
添加(hfm);
}
public int getPreferredHeight()
{
int-ret=0;
返回ret;
}
受保护的空位子布局(int-maxWidth、int-maxHeight)
{
int currX=0;
int currY=0;
场电流场;
currField=this.getField(0);
开关(ScreenConfig.getInstance().getScreen())
{
案例ScreenConfig.SCREEN_320_240:
currX=5;
咖喱=3;
打破
案例ScreenConfig.SCREEN_480_360:
案例ScreenConfig.SCREEN_480_320:
currX=5;
咖喱=1;
打破
}
this.setPositionChild(currField、currX、currY);
this.layoutChild(currField,currField.getPreferredWidth(),
currField.getPreferredHeight());
setExtent(this.getPreferredWidth(),this.getPreferredHeight());
}
受保护的空心漆(图形)
{
超级油漆(图形);
graphics.drawRect(0,0,this.getPreferredWidth(),this.getPreferredHeight());
}
}
我这样做是为了帮助别人。
继续分享你的代码。
谢谢。如果要删除光标,可以覆盖字段的drawFocus
protected void drawFocus(Graphics graphics, boolean on) {} // remove cursor
尝试重写拉焦焦点来处理焦点拖放位置,可以设置光标的位置,但不能处理它在中间的连续绘制。