仅在BlackBerry的文本框中更改特定文本的颜色

时间:2009-05-22 13:19:13

标签: user-interface blackberry java-me

如何仅在Blackberry应用程序的文本框中更改特定文本的颜色?

3 个答案:

答案 0 :(得分:6)

不幸的是答案是你自己的 - 你没有可编辑的文本字段控件,可以让你改变字体颜色。 @Mark Novakowski的答案是解决这个问题的标准方法,但会将所有文本更改为一种颜色。

如果您不担心支持Pearl样式的SureType键盘,那么您可以覆盖ActiveRichTextField上的keyChar并手动将字符添加到ActiveRichTextField中的文本。

对于SureType字段,答案更糟糕 - 您没有对非Qwerty手机(珍珠系列)的SureType API(正确处理预测文本弹出窗口)的低级访问权限,因此您必须求助一些真正的技巧,让一个完全自定义的文本字段在这些设备上正常运行。可能归结为必须在管理器中安排多个EditField,例如,一个EditField被覆盖以显示读取(如Marks的回答)。根据需要,将动态创建和添加文本字段。

是的,有时候RIM API可以让事情变得简单,而且几乎不可能做到困难。

答案 1 :(得分:4)

你检查过ActiveRichTextField吗?我自己只使用过RichTextField但看起来ActiveRichTextField让你可以指定除了字体和文本区域之外的文本区域的颜色。格式。需要一些设置才能获得这些字段但是查看了RichTextField的javadoc,它提供了一个非常好的解释。

以下是一些示例代码:

int offsets[] = new int[]{0, 5, 11};
Font[] fonts = new Font[]{Font.getDefault(), Font.getDefault()};
int bg[] = new int[]{Color.WHITE, Color.WHITE};
int fg[] = new int[]{Color.BLACK, Color.GREEN};
byte attributes[] = new byte[]{0, 1};

add(new ActiveRichTextField("Hello world", offsets, attributes, fonts, fg, bg, 0));

答案 2 :(得分:4)

正如Fostah在评论中所说,TextBox类在改变外观方面不是很灵活。即使是许多“Field”课程的外观也很难改变。

但是,如果你有一些灵活性并且可以使用诸如EditField(或其变体)之类的字段而不是TextBox,那么应该只是重写paint方法。类似的东西:

protected void paint(Graphics graphics) {
    graphics.setColor(Color.RED);
    super.paint(graphics);
}