0

GWT 2.5.1; GPE で Eclipse 4.2 を使用。
UiBinderで指定したUI

アプリは、「Go」ボタンを含むスプラッシュ スクリーンを表示します。そのボタンのクリック ハンドラーは、それ自体を非表示にしたり、他の 3 つのボタン、画像、テキストを表示したりするなど、さまざまな初期化を行います。また、RequestBuilder を介してサーバー リクエスト (XMLHttpRequest) を開始します。RequestBuilder コールバックは、返されたサーバー データを使用して、canvas 要素に棒グラフを描画します。

[Go] ボタンをクリックすると、ブラウザー ウィンドウは上記のすべての視覚要素を備えた期待どおりに表示されます。ただし、3 つのボタンはクリックに反応しません。それらのハンドラーが呼び出されないだけでなく、マウスがクリックされたときにアクティブ化の視覚的な兆候がわずかに表示されません。ブラウザはフリーズしていません。たとえば、ウィンドウのサイズが変更されると、アプリのサイズ変更ハンドラーが呼び出されます。

ロギングに基づく: [Go] ボタン ハンドラーが返された後、RequestBuilder コールバックが実行されます。つまり、ログ出力はもうありません (ウィンドウのサイズを変更しない限り)。

FWIW これは私の最初の GWT の取り組みです。

4

3 に答える 3

0

Java コードではなく、UiBinder ファイルでボタンの位置を設定できますか? それらを Horizo​​ntalPanel に配置すると、自動的に間隔が空けられます。

要素レベルで操作してボタンを非表示にするのではなく、setVisible(true); を使用してボタン インスタンスを呼び出します。例: buttonA.setVisible(true)

于 2013-04-30T09:44:50.167 に答える
0

実験によって、私は部分的な答えを見つけました。応答しない 3 つのボタンは、ui.xml ファイルで {style.hidden} で宣言されており、.css の visibility:hidden 属性を参照しています。Javaコードでは、これらのボタンを次のように再表示します。

protected void showElement(Element e) {
  e.removeClassName(style.hidden());
  }

明らかに、人生を非表示にしてからこのように表示するだけでは、ボタンをアクティブにするには不十分です。なぜそうなのかを調査しようとしていますが、私が無知ではないことを示すコメントを投稿していない限り、この「小さな」質問への回答は大歓迎です。

于 2013-04-28T00:47:10.413 に答える
0

(コメントするには長すぎます)

この問題は、同じ位置にボタンがあり、特定の時間に特定のボタンだけが表示されるはずであるという事実に関連していることを発見しました。つまり、ユーザーはページの同じ位置に次のいずれかを表示します。

ButtonA ButtonB ButtonC

また

ButtonD ButtonE ButtonF

また

BigButtonG (as wide either of the preceding groups)

問題は、可視性に関係なく、上記の 3 つのディスプレイのうち最後に宣言された方が (事実上) より高い z-index を持ち、マウスに応答する唯一のディスプレイであるということです。そのため、ボタン グループを表示/非表示にするコードで div z-indexes を明示的に設定するソリューションを実装しようとしています。

于 2013-04-28T10:08:56.667 に答える