2011-09-20 64 views
1

我在表单中有一个TextField。这TextField应该有默认的重点, 它工作正常。现在我希望用户了解这一点,并告诉他, 他在TextField之内 - 所以TextField光标应显示为 并闪烁。LWUIT - 显示TextField闪烁光标,即使该字段为空

我只在DefaultLookAndFeel找到drawTextFieldCursor。但我有 绝对不知道如何将这个应用到我的TextField

任何帮助 - 和代码将不胜感激!


下面是一个示例。我仍然没有工作。

public void search2() { 
    searchForm      = new Form(); 
    TextField searchArea = new TextField(); 
    searchForm.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); 
    searchForm.addComponent(searchArea); 
    searchArea.requestFocus(); 
    int i = Display.getInstance().getKeyCode(Display.GAME_FIRE); 
    searchArea.keyPressed(i); 
    searchArea.keyReleased(i); 
    searchForm.show(); 
} 

会发生什么情况是:文本字段的重点是,它可以直接编辑,显示在“ABC”的模式,但我真正想要的是向用户显示的光标,让他知道他的文本字段内。这是不会发生......如果有人可以告诉我了一些工作代码...

回答

0

drawTextFieldCursor方法有一个Graphics参数,这样你就可以得出你的光标的方法是:

  1. 派生文本字段
  2. 在其public void paint(Graphics g)中,在设置TextField的Paint Graphic的绘图方法后调用drawTextFieldCursor。
+0

我triedpublic类TF扩展TextField { \t公共无效漆(图形G){ \t UIManager的经理= getUIManager(); \t manager.getLookAndFeel()。drawTextField(g,this); \t \t manager.getLookAndFeel()。drawTextFieldCursor(g,this); \t \t \t paintHint(g); \t} \t} 和在文本区域以保护无效paintHint(图形克){改性paintHint,但仍然没有闪烁的光标。 – Carl

+0

在Javadoc据说'眨眼通过避免调用此method.' – 2011-09-20 13:34:05

+0

公共类TF扩展TextField { \t公共无效涂料(图形克){ \t UIManager的经理= getUIManager()简单地进行处理; \t manager.getLookAndFeel()。drawTextField(g,this); \t paintHint(g); \t} \t}也不眨眼。 这是干什么的:它是否完全移除了光标 - 但我想要它所有的时间 – Carl

2

您希望文本字段处于编辑模式,而不是文本字段光标显示(编辑时发生的情况)。使用requestFocus()以确保文本字段具有焦点,然后使用类似:

int i = Display.getInstance().getKeyCode(Display.GAME_FIRE); 
tf.keyPressed(i); 
tf.keyReleased(i); 
+0

请参阅我的编辑,仍然没有修复! – Carl

+0

这很奇怪,因为我看到它几乎在每个应用程序中闪烁。例如。在LWUIT演示中,它闪烁,没有任何针对当前聚焦组件的黑客或补丁。我建议你在LWUIT演示中确认一下,然后在LWUIT中放置一个断点,看看为什么光标不是为你绘制的。它应该是无缝的。 –