Eclipse Scout Neon滚动位置

时间:2016-03-14 11:23:11

标签: setfocus eclipse-scout

我有一些很长的形式有很多字段(和方框)。 因此,我希望有一些快捷键按钮可以滚动到表单中的特定groupBox

我试试

getMyFieldInBox.requestFocus()
如果字段不是labelgroupBox,那么

女巫会工作。

如果我在groupBox上尝试此操作,则会返回错误信息:

Javascript would be the way to go.

我的问题是,并非所有的组合框都具有第一个可聚焦的"领域。

如何实现这一目标?我尝试将getConfiguredFocusable()框中的true覆盖为var array = [ 238, 259, 276, 307 ]; var dataset ={}; array.map(function(value, index) { dataset[index]= value }); ,但不起作用。

2 个答案:

答案 0 :(得分:2)

是的确,我能够通过尝试聚焦一个组合框来重现错误(不确定什么应该'集中'在一个组框项目上,但肯定不会发生这个错误!)!所以随意打开机票并报告问题!也许我们在聚焦我们不知道要聚焦的领域时会遇到一个共同的问题(例如,组合框和标签等)

不确定,如果我正确理解您的问题,但我建议(作为解决方法),您在组框中重置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);
            }
        }
    }

致以最诚挚的问候,

Mattthias

答案 1 :(得分:1)

从人机工程学的角度来看,应避免使用可滚动的形式。

(从历史上看,表单不可滚动。可滚动表单是针对特殊情况引入的,例如在演示时应对beamers的低屏幕分辨率。)

理想情况下,表单应设计为在用户屏幕上很好地呈现数据。这要求用户的屏幕分辨率已知。

一般情况下,请尝试调整以下指南:

  1. 将表格中最重要的信息放在最上面。
  2. 不重要的信息应放在底部。
  3. 更重要的信息应放在标签中。