GWT - Widget CellTable
introduzione
Il CellTable widget rappresenta una vista tabulare che supporta la paginazione e le colonne.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per com.google.gwt.user.cellview.client.CellTable<T> classe -
public class CellTable<T>
   extends AbstractHasData<T>Costruttori di classi
| Sr.No. | Costruttore e descrizione | 
|---|---|
| 1 | CellTable() Costruisce una tabella con una dimensione pagina predefinita di 15. | 
| 2 | CellTable(int pageSize) Costruisce una tabella con le dimensioni della pagina specificate. | 
| 3 | CellTable(int pageSize, CellTable.Resources resources) Costruisce una tabella con le dimensioni di pagina specificate con CellTable.BasicResources specificato. | 
| 4 | CellTable(int pageSize, CellTable.Resources resources, ProvidesKey<T> keyProvider) Costruisce una tabella con le dimensioni di pagina specificate, il CellTable.BasicResources specificato e il provider di chiavi specificato. | 
| 5 | CellTable(int pageSize, ProvidesKey<T> keyProvider) Costruisce una tabella con le dimensioni di pagina specificate e il provider di chiavi specificato. | 
| 6 | CellTable(ProvidesKey<T> keyProvider) Costruisce una tabella con una dimensione pagina predefinita di 15 e il provider di chiavi specificato. | 
Metodi di classe
| Sr.No. | Nome e descrizione della funzione | 
|---|---|
| 1 | void addColumn(Column<T,?> col) Aggiunge una colonna alla tabella. | 
| 2 | void addColumn(Column<T,?> col, Header<?> header) Aggiunge una colonna alla tabella con un'intestazione associata. | 
| 3 | void addColumn(Column<T,?> col, Header<?> header, Header<?> footer) Aggiunge una colonna alla tabella con un'intestazione e un piè di pagina associati. | 
| 4 | void addColumn(Column<T,?> col, SafeHtml headerHtml) Aggiunge una colonna alla tabella con un'intestazione SafeHtml associata. | 
| 5 | void addColumn(Column<T,?> col, SafeHtml headerHtml, SafeHtml footerHtml) Aggiunge una colonna alla tabella con un'intestazione e un piè di pagina SafeHtml associati. | 
| 6 | void addColumn(Column<T,?> col, java.lang.String headerString) Aggiunge una colonna alla tabella con un'intestazione String associata. | 
| 7 | void add Column (Column<T,?> col, java. lang. String header String, java.lang.String footer String) Aggiunge una colonna alla tabella con un'intestazione e un piè di pagina String associati. | 
| 8 | void addColumnStyleName(int index, java.lang.String styleName) Aggiungi un nome di stile a TableColElement all'indice specificato, creandolo se necessario. | 
| 9 | protected Element convertToElements(SafeHtml html) Converti l'HTML specificato in elementi DOM e restituisce il genitore degli elementi DOM. | 
| 10 | protected boolean dependsOnSelection() Verificare se le celle nella vista dipendono dallo stato di selezione. | 
| 11 | protected void do Selection (Event event, T value, int row, int column) Deprecato. utilizzare invece Abstract Has Data.add Cell Preview Handler (com.google.gwt.view.client. Cell Preview Event.Handler). | 
| 12 | int getBodyHeight() Restituisce l'altezza del corpo della tabella. | 
| 13 | protected Element getChildContainer() Restituisce l'elemento che contiene le celle renderizzate. | 
| 14 | int getHeaderHeight() Restituisce l'altezza dell'intestazione della tabella. | 
| 15 | protected Element getKeyboardSelectedElement() Ottieni l'elemento che ha la selezione della tastiera. | 
| 16 | TableRowElement getRowElement(int row) Ottieni TableRowElement per la riga specificata. | 
| 17 | protected boolean isKeyboardNavigationSuppressed() Controlla se la navigazione da tastiera viene soppressa, ad esempio quando l'utente modifica una cella. | 
| 18 | protected void onBlur() Chiamato quando il widget è sfocato. | 
| 19 | protected void onBrowserEvent2(Event event) Chiamato dopo il completamento di AbstractHasData.onBrowserEvent (Event). | 
| 20 | protected void onFocus() Chiamato quando il widget è attivo. | 
| 21 | void redrawFooters() Ridisegna i piè di pagina della tabella. | 
| 22 | void redrawHeaders() Ridisegna le intestazioni della tabella. | 
| 23 | void removeColumn(Column<T,?> col) Rimuovi una colonna. | 
| 24 | void removeColumn(int index) Rimuovi una colonna. | 
| 25 | void removeColumnStyleName(int index, java.lang.String styleName) Rimuove uno stile da TableColElement all'indice specificato. | 
| 26 | protected void renderRowValues(SafeHtmlBuilder sb, java.util.List<T> values, int start, SelectionModel<? super T> selectionModel) Renderizza tutti i valori di riga nel SafeHtmlBuilder specificato. | 
| 27 | protected void replaceAllChildren(java.util.List<T> values, SafeHtml html) Sostituisci tutti i figli con l'html specificato. | 
| 28 | protected boolean resetFocusOnCell() Reimposta lo stato attivo sulla cella attualmente attiva. | 
| 29 | protected void setKeyboardSelected(int index, boolean selected, boolean stealFocus) Aggiorna un elemento per riflettere lo stato selezionato dalla tastiera. | 
| 30 | void setRowStyles(RowStyles<T> rowStyles) Imposta l'oggetto utilizzato per determinare lo stile di una riga; la modifica avrà effetto al successivo rendering della tabella. | 
| 31 | protected void setSelected(Element elem, boolean selected) Deprecato. questo metodo non viene mai chiamato da AbstractHasData, rende gli stili selezionati in renderRowValues (SafeHtmlBuilder, List, int, SelectionModel) | 
Metodi ereditati
Questa classe eredita i metodi dalle seguenti classi:
- com.google.gwt.user.client.ui.UIObject 
- com.google.gwt.user.client.ui.Widget 
- com.google.gwt.user.cellview.client.AbstractHasData 
- java.lang.Object 
Esempio di widget CellTable
Questo esempio ti guiderà attraverso semplici passaggi per mostrare l'utilizzo di un widget CellTable in GWT. Segui i passaggi seguenti per aggiornare l'applicazione GWT che abbiamo creato in GWT - Capitolo Crea applicazione -
| Passo | Descrizione | 
|---|---|
| 1 | Crea un progetto con un nome HelloWorld sotto un pacchetto com.tutorialspoint come spiegato nel capitolo GWT - Crea applicazione . | 
| 2 | Modifica HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html e HelloWorld.java come spiegato di seguito. Mantieni invariato il resto dei file. | 
| 3 | Compilare ed eseguire l'applicazione per verificare il risultato della logica implementata. | 
Di seguito è riportato il contenuto del descrittore del modulo modificato src/com.tutorialspoint/HelloWorld.gwt.xml.
<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
   <!-- Inherit the core Web Toolkit stuff.                        -->
   <inherits name = 'com.google.gwt.user.User'/>
   <!-- Inherit the default GWT style sheet.                       -->
   <inherits name = 'com.google.gwt.user.theme.clean.Clean'/>
   <!-- Specify the app entry point class.                         -->
   <entry-point class = 'com.tutorialspoint.client.HelloWorld'/>
   <!-- Specify the paths for translatable code                    -->
   <source path = 'client'/>
   <source path = 'shared'/>
</module>Di seguito è riportato il contenuto del file del foglio di stile modificato war/HelloWorld.css.
body {
   text-align: center;
   font-family: verdana, sans-serif;
}
h1 {
   font-size: 2em;
   font-weight: bold;
   color: #777777;
   margin: 40px 0px 70px;
   text-align: center;
}Di seguito è riportato il contenuto del file host HTML modificato war/HelloWorld.html.
<html>
   <head>
      <title>Hello World</title>
      <link rel = "stylesheet" href = "HelloWorld.css"/>
      <script language = "javascript" src = "helloworld/helloworld.nocache.js">
      </script>
   </head>
   <body>
      <h1>CellTable Widget Demonstration</h1>
      <div id = "gwtContainer"></div>
   </body>
</html>Cerchiamo di avere il seguente contenuto del file Java src/com.tutorialspoint/HelloWorld.java che dimostrerà l'uso del widget CellTable.
package com.tutorialspoint.client;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client
.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
public class HelloWorld implements EntryPoint {
   /**
    * A simple data type that represents a contact.
    */
   
   private static class Contact {
      private final String address;
      private final Date birthday;
      private final String name;
      public Contact(String name, Date birthday, String address) {
         this.name = name;
         this.birthday = birthday;
         this.address = address;
      }
   }
   /**
    * The list of data to display.
    */
 
   private static final List<Contact> CONTACTS = Arrays.asList(
      new Contact("John", new Date(80, 4, 12), "123 Fourth Avenue"),
      new Contact("Joe", new Date(85, 2, 22), "22 Lance Ln"),
      new Contact("George",new Date(46, 6, 6),"1600 Pennsylvania Avenue"));
   public void onModuleLoad() {
      // Create a CellTable.
      CellTable<Contact> table = new CellTable<Contact>();
      table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
      // Add a text column to show the name.
      TextColumn<Contact> nameColumn = 
      new TextColumn<Contact>() {
         @Override
         public String getValue(Contact object) {
            return object.name;
         }
      };
      table.addColumn(nameColumn, "Name");
      // Add a date column to show the birthday.
      DateCell dateCell = new DateCell();
      Column<Contact, Date> dateColumn 
      = new Column<Contact, Date>(dateCell) {
         @Override
         public Date getValue(Contact object) {
            return object.birthday;
         }
      };
      table.addColumn(dateColumn, "Birthday");
      // Add a text column to show the address.
      TextColumn<Contact> addressColumn 
      = new TextColumn<Contact>() {
         @Override
         public String getValue(Contact object) {
            return object.address;
         }
      };
      table.addColumn(addressColumn, "Address");
      // Add a selection model to handle user selection.
      final SingleSelectionModel<Contact> selectionModel 
      = new SingleSelectionModel<Contact>();
      table.setSelectionModel(selectionModel);
      selectionModel.addSelectionChangeHandler(
      new SelectionChangeEvent.Handler() {
         public void onSelectionChange(SelectionChangeEvent event) {
            Contact selected = selectionModel.getSelectedObject();
            if (selected != null) {
               Window.alert("You selected: " + selected.name);
            }
         }
      });
      // Set the total row count. This isn't strictly necessary,
      // but it affects paging calculations, so its good habit to
      // keep the row count up to date.
      table.setRowCount(CONTACTS.size(), true);
      // Push the data into the widget.
      table.setRowData(0, CONTACTS);
      VerticalPanel panel = new VerticalPanel();
      panel.setBorderWidth(1);	    
      panel.setWidth("400");
      panel.add(table);
      // Add the widgets to the root panel.
      RootPanel.get().add(panel);
   }
}Una volta che sei pronto con tutte le modifiche fatte, compiliamo ed eseguiamo l'applicazione in modalità sviluppo come abbiamo fatto nel capitolo GWT - Crea applicazione . Se tutto va bene con la tua applicazione, questo produrrà il seguente risultato:
 
 
                        