2011-09-12 4 views
10

プログラミングのシナリオでは、私のGWTテキストボックスが集中しているかどうかを確認する必要がありました。私はブール値とフォーカスのペアを追加して終わりました。& BlurHandlerを手動でフォーカス状態にしておくと、なぜフォーカス可能なコンポーネントがgwtにフォーカスされているかを返すメソッドがないのだろうか?GWTにisFocused()がないのはなぜですか?

+1

ここに誰もこれに答えることはできません。それを設計したGoogleからの人々の一人が来ることがない限り、それはかなり起こりそうにない。 –

+2

彼らはあなたが思っている以上のものを持っています –

+0

FocusHandlerを使用すると何が問題になりますか? – helpermethod

答えて

11

数年前まで(Firefox 3、Safari 4、ゲームの最後のプレイヤーを指し示して、サポートが追加されているdocument.activeElement)までは、クロスブラウザーの方法がなかったので。

GWTはSafari 3(Safari 2のサポートは廃止されていると思われます)とFirefox 2(DevModeプラグインはありませんが、Operaはサポートされていません。 DevModeもありません)、サポートされているすべてのブラウザで機能するような機能を提供することはできません。

最後に、私はこれまで問題追跡ツールの強化を依頼した人はいないと思いますが(少なくとも私は見つけられませんでした)。あなたが言ったように、あなたはすでにFocusHandler/BlurHandler(これはクロスブラウザで動作します)を使用して、今日それを行うことができます。

[1] http://code.google.com/webtoolkit/doc/latest/FAQ_GettingStarted.html#What_browsers_does_GWT_support? GWT 2.1.0でサポート(user.agent = gecko、gecko1_8)が削除されていて、IE9のリストは表示されていないFirefox 1.0が一覧表示されているため、そのページは少し古いですGWT 2.3.0で追加されていますが、Operaの最新バージョンのみがサポートされていると思います。

+0

どのブラウザがそれをサポートしているのかについては、MDN:https://developer.mozilla.org/en-US/docs/Web/API/document.activeElement を参照してください。今日、すべての主要なブラウザがサポートしているようですIE 4+、Chrome 2+など)、それを使用することはかなり安全です。 – PhiLho

1

どのウィジェットにフォーカスがあるのか​​わかりませんが、あなたはすでに解決策を持っています。 GWTの初心者として、私は私の解決策を共有することを提案する:

  1. は、ウィジェットの「focusedWidget」step 1

  2. 作成フォーカスハンドラのように、オブジェクト内のprivateフィールドを宣言し、ここではクラスのTextBoxです。 OnFocusブロックでは、ウィジェットを 'focusedWidget'に割り当てます。この種のイベントは、フォーカスできるすべてのウィジェットに追加できます。 ![step 2] [2]

  3. それだけです。あなたが結んだすべてのウィジェットは、フォーカスされるたびにfocusWidgetに設定されます。次に、 'focusedWidget'を使用して、どの現在のウィジェットがフォーカスされているかを判別できます。 ![ステップ3] [3]

JUnitでテストします。 see image of snippet here 願っています。

+0

これは便利ですが、各項目にもぼかしハンドラを追加する必要があります。現在フォーカスのない項目の状況を検出し、focusedWidgetの値をnullに設定できます。 – Joel

関連する問題