2011-07-18 41 views
1

我有一個表,用戶單擊一個複選框以選擇一行。(GWT)如何在表中選定的行上填充顏色?

我想讓它在用戶在感興趣的行上計時並讓該行用彩色背景填充的位置。我如何在GWT中做這件事?

編輯:我想知道如何使用FlexTable來實現這一點。非常感謝你

回答

1

要操縱上的點擊操作的行樣式添加一個ClickHandler到FlexTable對象。在onClick(ClickEvent)中,您可以通過FlexTable方法getCellForEvent(ClickEvent)獲得單元格單擊。返回的單元格包含有關單擊的行(和列)編號的信息。通過getRowFormatter().getElement()您可以獲取行的元素並向該行添加樣式名,以添加顏色或直接在代碼中設置代碼中該行的顏色。

0

也許你應該使用一個celltable。 以下是一個示例: http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable

在celltables中,單擊某個單元格時,整個行將突出顯示。您可以使用CSS更改突出顯示的顏色以滿足您的需求。

試試下面的代碼:

public class CellTableExample implements EntryPoint { 

    private static class Contact { 
     private String address; 
     private String name; 

     public Contact(String name, String address) { 
      super(); 
      this.address = address; 
      this.name = name; 
     } 
    } 

    // The list of data to display. 
     private static List<Contact> CONTACTS = Arrays.asList(
     new Contact("John", "123 Fourth Road asdf asdf asdfasdf"), 
     new Contact("Mary", "222 Lancer Lane") 

    ); 

    @Override 
    public void onModuleLoad() { 
     CellTable<Contact> table = new CellTable<Contact>(); 

     //address column 
     TextColumn<Contact> addressColumn = new TextColumn<Contact>(){ 
      @Override 
      public String getValue(Contact contact) { 
       return contact.address; 
      } 
     }; 

     //name column 
     TextColumn<Contact> nameColumn = new TextColumn<Contact>(){ 
      @Override 
      public String getValue(Contact contact) { 
       return contact.name; 
      } 
     }; 

     // Add the columns. 
     table.addColumn(nameColumn, "Name"); 
     table.addColumn(addressColumn, "Address"); 

     table.setRowCount(CONTACTS.size(), true); 
     table.setRowData(0, CONTACTS); 

     RootPanel.get().add(table); 
    } 

} 
+0

謝謝,這很好。但我想知道如何使用FlexTables來實現它?我的代碼有點大,所以試圖切換到單元格表將是困難和乏味的。 – 404Error