Когда вы используете вкладки в GWT, панели, содержащиеся в каждой вкладке, кажутся загруженными с отложенной загрузкой и не полностью настроены, пока пользователь не нажмет на каждую вкладку.
В частности, контейнеры вкладок будут иметь нулевую ширину и высоту (журналы ошибок, вероятно, будут давать ошибку о контейнерах, имеющих нулевую ширину), поэтому рисование графика завершится ошибкой и оставит пустое пространство.
Что вам нужно сделать (и, вероятно, в любом случае это хорошая практика), так это лениво загрузить содержимое вкладок, чтобы график загружался только тогда, когда вкладка полностью настроена.Это можно сделать, удалив вызов t.setGraphs (...) и добавив обработчик выбора, который делает это вместо этого:
tabPanel.addSelectionHandler(new SelectionHandler<Integer> () {
public void onSelection(SelectionEvent<Integer> event) {
// Pseudocode:
// n = event.getSelectedItem()
// t = displayTab[n]
// g = graphList[n]
// t.setGraphs(g)
}
});
, чтобы графики добавлялись и рисовались толькокогда вкладка выбрана.
Возможно, вы также захотите вызвать
tabPanel.selectTab(0);
, чтобы принудительно выбрать первую вкладку после установки обработчика выбора.
У меня были те же проблемы, которые вы описали, и это решило их.