是的,确实,我能够通过尝试聚焦一个组框来重现该错误(不确定应该在组框项目上“聚焦”什么,但肯定不会发生此错误!)!因此,请随时开票并报告问题!也许我们在关注不知道要关注什么的字段时遇到一个常见问题(例如,分组框和标签等)
不确定,如果我正确理解了您的问题,但我建议(作为一种解决方法),您requestFocus()
在您的组框(例如主框)中覆盖,您可以在其中递归地收集所有可聚焦(并且可能是特殊类型)的子字段,按顺序对它们进行排序,然后获得第一个可用的(如果有的话)并将重点放在上面。否则什么都不做。
可能是这样的:
@Override
public void requestFocus() {
final Map<Double, IFormField> orderedFields = new TreeMap<>();
getBoxWithDesiredFocusableFields().visitFields(new IFormFieldVisitor() {
@Override
public boolean visitField(IFormField field, int level, int fieldIndex) {
if (field.isFocusable() && field....some specific conditions) {
orderedFields.put(field.getOrder(), field);
}
return true;
}
}, 0);
if (orderedFields.keySet().iterator().hasNext()) {
// Focusable fields available -> get first focusable field
IFormField firstFocusableField = orderedFields.get(orderedFields.keySet().iterator().next());
if (firstFocusableField != null) {
firstFocusableField.getForm().requestFocus(firstFocusableField);
}
}
}
此致,
马蒂亚斯