nbz*_*nbz 1 java swt ubuntu-11.10
我在RCP上遇到了一个奇怪的问题.我没有使用Linux来开发,所以我对常见错误的了解非常少.我正在使用Ubuntu 11.10来试用RCP.
在我的RCP中,我有一个SWT文本,它附加了两个侦听器 - 一个用于focus(FocusAdapter),另一个用于SWT.DefaultSelection.在FocusAdapter,我实现了该focusLost方法.
行为是这样的,如果用户编辑文本并点击返回键,则将调用SWT.DefaultSelection监听器handleEvent并显示消息以确认新文本并更新Text字段.如果用户编辑了文本但没有点击返回键并只是在Text字段外单击,则会focusLost调用该事件,将文本还原为原始文本(text.setText(originalText);).
当我从Eclipse启动它时,这似乎工作正常,但当我通过Maven + Tycho导出产品时,这种行为似乎停止了工作.发生的情况是,当用户编辑文本时,无论用户是否点击返回键,它都只是恢复为原始文本,或者只是在Text字段外点击.也没有用于确认编辑文本的消息对话框.
从我收集它似乎只是使用focusLost事件和返回键无效.我很抱歉,如果这是显而易见的事情,但我没有在Windows机器上遇到这个,这是我用于主要开发的东西.
Baz*_*Baz 10
您可以倾听SWT.Traverse并检查是否event.detail等于SWT.TRAVERSE_RETURN.我在Linux上测试过它的工作原理:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Text text = new Text(shell, SWT.BORDER);
text.addListener(SWT.Traverse, new Listener()
{
@Override
public void handleEvent(Event event)
{
if(event.detail == SWT.TRAVERSE_RETURN)
{
System.out.println("Enter pressed");
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
Run Code Online (Sandbox Code Playgroud)
这里有一个相关的问题:
| 归档时间: |
|
| 查看次数: |
6882 次 |
| 最近记录: |