我有一个tableViewer,我可以编辑1列。每次此列的cellEditor获得焦点时,我都希望选择显示的所有文本。在普通的SWT文本控件中,我们只需执行text.selectAll();
,因此我在EditSupport类列中为cellEditor设置了此侦听器:
editor.getControl().addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
Text text = (Text) editor.getControl();
text.selectAll();
}
});
我知道我可以将cellEditor控件转换为Text输入,因为我已经使用普通setText();
对其进行了测试,并且它可以正常工作!但是,selectAll();
无效,我该如何解决?
解
我发现错误,上面问题中的代码完美无缺,我无法看到selectAll();
做某事的原因在于此方法:
@Override
protected Object getValue(Object element) {
String valor = MathUTILS.getBigDecimalFormatted(((ColaboradoresDespesasDocumentosLinhas) element).getValor(), PatternVARS.PATTERN_BIGDECIMAL_MILLION);
Text text = InterfaceFormatUTILS.getControlNumberFormat(editor, PatternVARS.PATTERN_BIGDECIMAL_BILLION);
return valor;
}
这也是EditingSupport类的一个方法,由于某种原因,格式化文本控件(Text text = InterfaceFormatUTILS.getControlNumberFormat(editor, PatternVARS.PATTERN_BIGDECIMAL_BILLION);
)会取消选择所有文本。此外,在此方法中执行selectAll();
并不起作用..