2015-10-08 3 views
0

J'utilise une cellule composite dans une grille qui a deux boutons. Je veux gérer les événements de clic sur les deux boutons séparément.Est-ce possible? s'il vous plaît expliquer en détail comment gérer ces événements séparément.Événement de cellule composite Gestion

Je joins mon code de cellule composite avec les boutons de référence.

private CompositeCell<FilterInfo> createCompositeCell(){ 

HasCell<FilterInfo, String> button1= new HasCell<FilterInfo, String>() { 

    public Cell<String> getCell() { 
    return new TextCell(); 
    } 

    public FieldUpdater<FilterInfo, String> getFieldUpdater() { 
    // TODO Auto-generated method stub 
    return null; 
    } 

    public String getValue(FilterInfo object) { 
    return "button 1"; 
    }}; 

    HasCell<FilterInfo, String> button2= new HasCell<FilterInfo,String>(){ 

    public Cell<String> getCell() { 
     return new ButtonCell(); 
    } 

    public FieldUpdater<FilterInfo, String> getFieldUpdater() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public String getValue(FilterInfo object) { 
     // TODO Auto-generated method stub 
     return "button 2"; 
    } 
    }; 

    List<HasCell<FilterInfo, ?>> cells = new ArrayList<HasCell<FilterInfo, ?>>(); 
    cells.add(button1); 
    cells.add(button2); 

    CompositeCell<FilterInfo> compositeCell = new CompositeCell<FilterInfo>(cells); 

    return compositeCell; 

Répondre

0

Vous gérez cliquez sur événement dans FieldUpdater de chaque bouton.

est ici par exemple un minimum de travail:

package com.adam.test.client; 

import java.util.ArrayList; 
import java.util.List; 

import com.google.gwt.cell.client.ButtonCell; 
import com.google.gwt.cell.client.CompositeCell; 
import com.google.gwt.cell.client.FieldUpdater; 
import com.google.gwt.cell.client.HasCell; 
import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.user.cellview.client.CellList; 
import com.google.gwt.user.cellview.client.Column; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.ui.RootPanel; 

public class Test implements EntryPoint { 

    @Override 
    public void onModuleLoad() { 
     CompositeCell<FilterInfo> compositeCell = createCompositeCell(); 
     CellList<FilterInfo> list = new CellList<FilterInfo>(compositeCell); 

     List<FilterInfo> values = new ArrayList<FilterInfo>(); 
     values.add(new FilterInfo()); 
     values.add(new FilterInfo()); 
     values.add(new FilterInfo()); 
     list.setRowData(values); 

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

    private CompositeCell<FilterInfo> createCompositeCell() { 
     Column<FilterInfo, String> button1Column = new Column<FilterInfo, String>(new ButtonCell()) { 
      @Override 
      public String getValue(FilterInfo object) { 
       return "Button 1"; 
      } 
     }; 
     button1Column.setFieldUpdater(new FieldUpdater<FilterInfo, String>() { 
      @Override 
      public void update(int index, FilterInfo object, String value) { 
       Window.alert("Button 1 clicked!"); 
      } 
     }); 

     Column<FilterInfo, String> button2Column = new Column<FilterInfo, String>(new ButtonCell()) { 
      @Override 
      public String getValue(FilterInfo object) { 
       return "Button 2"; 
      } 
     }; 
     button2Column.setFieldUpdater(new FieldUpdater<FilterInfo, String>() { 
      @Override 
      public void update(int index, FilterInfo object, String value) { 
       Window.alert("Button 2 clicked!"); 
      } 
     }); 

     ArrayList<HasCell<FilterInfo, ?>> compositeColumns = new ArrayList<HasCell<FilterInfo, ?>>(); 
     compositeColumns.add(button1Column); 
     compositeColumns.add(button2Column); 

     return new CompositeCell<FilterInfo>(compositeColumns); 
    } 

    private class FilterInfo {} 
} 
+0

S'il vous plaît quelqu'un peut-il donner un sage exemple de code avec les gestionnaires –

+0

j'ai code mis à jour dans ma réponse. Maintenant, c'est un exemple de code de travail. – Adam

+0

Merci @ Adam.Il a travaillé –