不在自定义BasicEditField bb中显示光标

时间:2011-08-05 04:56:06

标签: blackberry

请检查

BasicEditField demo = ew BasicEditField("", number, 15,
                BasicEditField.FILTER_NUMERIC
                        | BasicEditField.FIELD_LEFT) {
            public int getPreferredWidth() {
                int Width = Graphics.getScreenWidth() - 180;
                return Width;
            }

            public int getPreferredHeight() {
                return 30;
            }

            public void paint(Graphics g) {

                 g.setColor(Color.LINEN);
                 g.fillRect(0, 0, this.getWidth(), this.getHeight());
                 g.setColor(Color.BLUE);
                 g.drawText(getText(), 0, 0);
                super.paint(g);
            }

            protected void layout(int arg0, int arg1) {
                super.layout(getPreferredWidth(), getPreferredHeight());
                super.setExtent(getPreferredWidth(), getPreferredHeight());
            }
        };

这是我的代码帮帮我了吗?

2 个答案:

答案 0 :(得分:0)

Kalpana,我检查了你的代码。是的,它没有显示光标。我建议你使用EditField而不是BasicEditField。您也可以为Editfield覆盖这些方法。我试过了,它显示了光标。

答案 1 :(得分:0)

我想我可能已经通过在此自定义BasicEditField之前向管理器添加另一个字段来解决了这个问题。添加一个不做任何事情的字段。像这样:

BitmapField bugFix = new BitmapField(Bitmap.getBitmapResource("empty_image.png"));
myFieldManager.add(bugFix);
myFieldManager.add(demo);

但是,我发现虚拟字段的大小(本例中为BitmapField)很重要。如果你的" empty_image.png"图像只有2px高,只显示光标的前2px。因此,如果您可以处理额外的填充,请添加一个至少大约20px的字段,并显示整个光标。我还应该补充一点,这个bug似乎没有出现在你添加到管理器的任何后续自定义BasicEditFields中......只有第一个。嗯...