2013-08-27 62 views
1

我想有一個列表選擇將有多個樣式,我把兩種對象的一個​​是一組用戶(粗體),其餘是用戶(斜體或常規)是否可以添加將添加到部分添加的obj的樣式? 我的代碼如下所示:Vaadin ListSelect - 在一個列表中的多個樣式

for(Usr usr: userSearchResult){ 
    listSelect.addItem(usr); 
    } 
    listSelect.addStyleName("bold"); 
     for (Gr gr : groupSearchResult) { 
      searchList.addItem(gr); 
    } 

,也有風格的CSS正確與此類似

.v-select-bold .v-select-select { 
    font-weight:bold;} 

設置我會很高興由我自己來解決這個問題,但是這是兩天前現在我m in a dot;) 在此先感謝您的幫助!

+0

看看[這個在ListSelect項目樣式上的vaadin.com線程](https://vaadin.com/forum/#!/thread/1495117)。似乎沒有標準的方式來設計listselect的行。 –

回答

0

您無法對ListSelect的行進行樣式設置。您可以將一個表格組件與一列用於實現類似的結果。 Table.setCellStyleGenerator方法用於區分每個單元格(您的案例中的每一行)的樣式。

+0

你不可能說,在java中沒有這樣的詞,我們只是不知道如何。如果我想要桌子,我會使用桌子,我甚至可以做,並且我設法爲它着色,但是我的問題如下,我需要找到一種方法。 無論如何謝謝 –

+0

你的問題是關於Vaadin ListSelect。我指出,使用標準的Vaadin ListSelect是不可能的。但是,您可以擴展ListSelect的客戶端小部件。 – emre

+0

我挖了多一點,說實話,對於Vaadin ListSelect沒有辦法做到這一點......類選擇有內部選項和設置樣式的選項是不可能的,其唯一可能的類 - >所有內部元素。 非常感謝,我即將解決這個問題。 –

1

您可以將您的行存儲爲帶有樣式的標籤。在容器中會有一個標籤實例。在那裏你可以簡單地添加風格。

Container container = new IndexedContainer(); 
    container.addContainerProperty(NAME_PROPERTY, Label.class , ""); 

    for (int i = 0; i <= 50 ; i++) { 
     Item item = container.addItem(i); 
     Label label = new Label(HashUtils.getRandomSalt()); 
     label.addStyleName(style) 
     item.getItemProperty(NAME_PROPERTY).setValue(); 
    } 
    return container; 
+0

這是不完整的,甚至沒有編譯。什麼是NAME_PROPERTY? – javydreamercsw