Eclipse Scout 霓虹灯滚动位置
Eclipse Scout Neon scroll on position
我有一些包含很多字段(和框)的长表单。
因此,我希望有一些快捷方式按钮可以滚动到特定的 groupBox
形式。
我试试
getMyFieldInBox.requestFocus()
如果字段不是 label
或 groupBox
, 有效。
如果我在 groupBox
上尝试这个 return 我会出错 :
我的问题是并非所有组框都有第一个 "focusable" 字段。
如何实现?我尝试将框内的 getConfiguredFocusable()
覆盖为 true
,但是没有用。
是的,我确实能够通过尝试聚焦组框来重现错误(不确定应该 'focused' 放在组框项目上,但肯定不会发生此错误!)!所以请随时开工单并报告问题!也许我们在关注我们不知道关注什么的领域时遇到了一个共同的问题(例如分组框和标签等)
不确定,如果我理解正确你的问题,但我建议(作为一种解决方法),你覆盖 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);
}
}
}
此致,
马提亚斯
M7 将修复请求焦点在组框上的问题。第一个可聚焦的字段将获得焦点。如果组框没有可聚焦字段,则在该组框上请求焦点时不会执行任何操作。
从人体工程学的角度来看,应避免使用可滚动的表单。
(历史上,表单是不可滚动的。可滚动表单是为特殊情况引入的,例如,在进行演示时应对投影仪的低屏幕分辨率。)
理想情况下,表单的设计应该能够在用户屏幕上很好地呈现数据。这需要知道用户的屏幕分辨率。
一般来说,请尽量遵循以下准则:
- 将表单中最重要的信息放在顶部。
- 次要信息应放在底部。
- 更不重要的信息应该放在标签中。
我有一些包含很多字段(和框)的长表单。
因此,我希望有一些快捷方式按钮可以滚动到特定的 groupBox
形式。
我试试
getMyFieldInBox.requestFocus()
如果字段不是 label
或 groupBox
,有效。
如果我在 groupBox
上尝试这个 return 我会出错 :
我的问题是并非所有组框都有第一个 "focusable" 字段。
如何实现?我尝试将框内的 getConfiguredFocusable()
覆盖为 true
,但是没有用。
是的,我确实能够通过尝试聚焦组框来重现错误(不确定应该 'focused' 放在组框项目上,但肯定不会发生此错误!)!所以请随时开工单并报告问题!也许我们在关注我们不知道关注什么的领域时遇到了一个共同的问题(例如分组框和标签等)
不确定,如果我理解正确你的问题,但我建议(作为一种解决方法),你覆盖 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);
}
}
}
此致,
马提亚斯
M7 将修复请求焦点在组框上的问题。第一个可聚焦的字段将获得焦点。如果组框没有可聚焦字段,则在该组框上请求焦点时不会执行任何操作。
从人体工程学的角度来看,应避免使用可滚动的表单。
(历史上,表单是不可滚动的。可滚动表单是为特殊情况引入的,例如,在进行演示时应对投影仪的低屏幕分辨率。)
理想情况下,表单的设计应该能够在用户屏幕上很好地呈现数据。这需要知道用户的屏幕分辨率。
一般来说,请尽量遵循以下准则:
- 将表单中最重要的信息放在顶部。
- 次要信息应放在底部。
- 更不重要的信息应该放在标签中。