0

多くのフィールド (およびボックス) を含む長いフォームがあります。groupBoxこのため、特定のフォームにスクロールするショートカット ボタンがいくつか必要です。

私は試します

getMyFieldInBox.requestFocus()

labelフィールドがまたはでない場合、ウィッチは機能しますgroupBox

これを試してみるとgroupBox、エラーが返されます:

ここに画像の説明を入力

私の問題は、すべてのグループ ボックスに最初の「フォーカス可能な」フィールドがあるわけではないことです。

これを達成する方法は?getConfiguredFocusable()ボックス内をにオーバーライドしようとしましtrueたが、うまくいきません。

4

3 に答える 3

2

グループ ボックスへのフォーカスの要求は、M7 で修正されます。最初のフォーカス可能なフィールドがフォーカスされます。グループ ボックスにフォーカス可能なフィールドがない場合、そのグループ ボックスにフォーカスが要求されても、アクションは実行されません。

于 2016-04-13T11:32:04.837 に答える
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);
            }
        }
    }

よろしくお願いします、

マティアス

于 2016-03-18T09:57:25.613 に答える
1

人間工学の観点から、スクロール可能なフォームは避けるべきです。

(歴史的に、フォームはスクロール可能ではありませんでした。スクロール可能なフォームは、特別な場合に導入されました。たとえば、プレゼンテーションを行う際にビーマーの画面解像度が低い場合に対処するためです。)

理想的には、フォームはユーザーの画面にデータを適切に表示するように設計する必要があります。これには、ユーザーの画面解像度がわかっている必要があります。

一般に、次のガイドラインに従ってください。

  1. フォームの最も重要な情報を一番上に配置します。
  2. 重要度の低い情報は一番下に配置する必要があります。
  3. 重要度の低い情報はタブに配置する必要があります。
于 2016-05-17T10:14:31.867 に答える