2011-05-23 71 views
0

我正在使用decorated tab panel在GWT中開發應用程序。我已經爲選項卡實施了一個關閉選項。現在我的問題是,當我關閉一個選項卡並嘗試在另一個選項卡中添加一些數據時,它將採用錯誤的索引。在關閉gwt中的一個選項卡後選項卡索引問題

例如:我有4個選項卡,並關閉第三個。我打開第4個選項卡並嘗試添加某些內容,但其索引顯示爲3而不是4,因爲只有3個。

如何重置程序中的選項卡索引,或者其他任何可以讀取的解決方案在刪除它之前正確的標籤索引?

這是我添加新選項卡和關閉事件的地方。

HorizontalPanel horizontalPanel = new HorizontalPanel(); 
Image image = new Image(); 
Label label = new Label("New Report: " + k); 
label.setWordWrap(false); 

horizontalPanel.add(label); 
horizontalPanel.add(image); 

image.setUrl("images/1305803163_close.png"); 
tabpanel.add(newTab[k], horizontalPanel); 
tabindexx[k] = k; 

image.addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
    tabpanel.remove(tabpanel.getTabBar().getSelectedTab()); 
    } 
}); 

,並在代碼中的某些部分,我訪問這樣的

int selectedtab = tabpanel.getTabBar().getSelectedTab(); 

當然這會根據當前在該特定時刻的選項卡數返回一個索引的選項卡索引,所以我需要將它們存儲在某處,否則我必須在關閉後重置選項卡索引。

+0

選項卡面板使用基於0的索引,因此索引3實際上是第四個元素,因爲選項卡的編號爲0 - 1-2-3,但也許這只是在你的例子中的一個錯字...你可能會張貼一些代碼讓你的問題更清楚一點嗎? – 2011-05-23 07:43:56

+0

不要將代碼發佈到評論中,通過按問題標籤下的「編輯」鏈接將其添加到您的問題中。 – 2011-05-23 07:47:07

回答

0

會發生這種情況,因爲索引號是當前選項卡集的索引。 (如果關閉,顯然會影響其他人)。

我現在對GWT有些生疏,但我相信刪除或選擇標籤的唯一方法是使用索引。

一種解決方案可能是在您的代碼中管理選項卡代表列表(某些選項卡標識符),並在代碼中發生刪除時在該列表中執行鏡像刪除。然後,您可以查找刪除後要更新的標籤的新索引並獲取正確的索引。 (選項卡標識符可以與刪除前啓動時的選項卡原始索引一樣簡單)