2013-04-27 67 views
0

GWT 2.5.1;使用Eclipse 4.2和GPE;
使用UiBinder指定的用戶界面GWT按鈕在RequestBuilder回調後沒有響應

該應用程序顯示包含「Go」按鈕的啓動畫面。該按鈕的點擊處理程序執行各種初始化,包括隱藏自身並顯示其他三個按鈕,圖像和文本;它還通過RequestBuilder啓動服務器請求(XMLHttpRequest)。 RequestBuilder回調使用返回的服務器數據在畫布元素中繪製條形圖。

當我點擊「Go」按鈕後,瀏覽器窗口看起來像預期的那樣具有上述的所有可視元素。但這三個按鈕對點擊無響應。他們的處理程序不僅不會被調用,而且在鼠標單擊它們時不會顯示激活的輕微視覺指示。瀏覽器不凍結;例如,如果窗口被調整大小,則調用應用程序的調整大小處理程序。

基於日誌記錄:在「Go」按鈕處理程序返回RequestBuilder回調執行之後;那麼「沒有任何反應」,即沒有更多的日誌輸出(除非我調整窗口大小)。

FWIW這是我的第一個GWT努力。

+1

需要一些代碼。沒有它,只是猜測;) – 2013-04-27 17:29:04

+0

@AndreaBoscolo我明白,但我不知道要提供什麼代碼。可能相關的ui.xml和兩個java源文件總計大約1,500行。我認爲一些受過教育的猜測是我所能期待的最好的:什麼樣的錯誤可能導致這個問題? – brec 2013-04-27 23:54:44

回答

0

通過實驗,我找到了部分答案。這三個無響應的按鈕在ui.xml文件中用{style.hidden}聲明,它指向我的.css中的visibility:hidden屬性。在Java代碼我取消隱藏這些按鈕與:

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

顯然起始壽命爲隱藏,然後示出這種方式是不足以激活的按鈕。我即將開始研究爲何如此,但只要我沒有發表評論表明我不那麼無知,對這個「較小」問題的答案仍然是受歡迎的。

0

(太長的評論)

我剛剛發現這個問題涉及到的事實,我在同一個位置,其中只有特定的人應該在給定的時間是可見的按鈕。換句話說,用戶將在相同的位置在頁面上看到的一個:

ButtonA ButtonB ButtonC 

ButtonD ButtonE ButtonF 

BigButtonG (as wide either of the preceding groups) 

的問題是,無論知名度,取其上述三個顯示器中的最後一個(實際上)具有更高的z-索引,並且是唯一一個將鼠標響應的顯示器。所以我正要實現一個在顯示/隱藏按鈕組的代碼中明確設置div z-index的解決方案。

+0

我之前評論中指出的解決方案工作正常。無論何時我顯示/隱藏包含按鈕組的div,我都會添加/刪除z-index:9999的樣式以及刪除/添加樣式的可見性:隱藏。 – brec 2013-04-30 15:03:30

0

你可以在你的UiBinder文件而不是你的Java代碼中設置按鈕的位置嗎?將它們放置在Horizo​​ntalPanel中,它們將自動間隔開。

而不是在元素級別進行交互以隱藏按鈕,而是使用setVisible(true)調用您的按鈕實例;例如,buttonA.setVisible(true)

+0

正如問題所述,「用UiBinder指定的UI」。間距/佈局沒有問題。而setVisible使用「display」元素屬性,在我的情況下,它具有影響佈局的不良效果。 – brec 2013-04-30 14:57:45

+0

好的。我錯誤地閱讀了你的回覆之一「我剛剛發現問題與我在同一位置有按鈕的事實有關,其中只有某些按鈕在給定的時間纔可見」。 – Carl 2013-05-01 15:45:40