2011-11-29 138 views
2

我試圖創建一個JTabbedPane選項卡,將有不同的顏色時選擇。例如,假設我有標籤A,B和C.如果沒有選擇標籤,那麼標籤顏色將是默認值。如果選擇標籤A,則標籤顏色將變爲紅色。如果選擇了選項卡B,則選項卡顏色將變爲綠色。如果選擇了選項卡C,則選項卡顏色將變爲黃色。我如何實現這種行爲?我能找到的最接近的方法是調用UIManager.put("TabbedPane.selected", Color.RED),但這會將所有選定選項卡的顏色設置爲紅色。如何爲JTabbedPane的不同選定選項卡設置不同的顏色?

回答

1

爲選擇添加一個監聽器,然後相應地更改背景。例如:

pane.addChangeListener(new ChangeListener() { 
    public void stateChanged(ChangeEvent e) { 
     int index = pane.getSelectedIndex(); 
     if(index == 0) { 
     pane.setBackgroundAt(0, Color.RED); 
     } else if(index == 1) { 
     pane.setBackgroundAt(0, Color.GREEN); 
     } 
     ... 
    } 
}); 
+0

這並不完全是我嘗試製作的行爲。使用您的方法,所有選項卡都以默認顏色開始。選中標籤後,標籤顏色將更改爲代碼中指定的顏色,但實際繪製的顏色是默認選定標籤顏色。傳遞到'setBackgroundAt()'的顏色直到選中新選項卡後纔會顯示。 – lalalainexd

+0

@lalalainexd這只是一個例子。您可以根據需要更改stateChanged方法的代碼,例如,將背景顏色設置爲默認值(使用null)以選擇未選中的選項卡。 – ugo

+0

@lalalainexd int index = pane.getSelectedIndex(); Color selectedColor = index == 0?Color.red:index == 1?Color.green:Color.yellow;對於(int i = 0; int ugo

相關問題