2013-09-04 2 views
0

Tout d'abord, salut tout le monde. Je suis nouveau ici et j'ai juste commencé à apprendre gwt. Il y a une chose que je ne comprends pas concernant l'exemple d'un stockwatch. Tout d'abord, il existe une méthode d'ajout de stock, qui ajoute un nouveau stock à une liste. À l'intérieur de cette méthode, nous ajoutons également le bouton Supprimer et l'écouteur attaché. Ma question est, comment est-il possible que indexOf attr est défini, quand vous n'inscrivez pas cette partie du code lorsque vous ajoutez un nouveau stock, vous n'entrerez dans cette partie que lorsque vous cliquez sur le bouton Supprimer. Mais ce code fonctionne, et je ne peux pas trouver d'explication pourquoi .. J'ai essayé de déboguer l'application, mais j'ai encore du mal à me désintéresser. Désolé pour mon mauvais anglais.GWT - exemple de stockwatch - explication de la gestion des événements

private void addStock() 
{ 
    final String symbol = newSymbolTextBox.getText().toUpperCase().trim(); 

    //validaciju vrsimo upotrebom regularnih izraza 
    if(symbol.matches("[0-9A-Z]")) 
    { 
     Window.alert("'" + symbol + "' is not a valid symbol."); 
     newSymbolTextBox.selectAll(); 
     return; 

    } 

    newSymbolTextBox.setText(""); 

    if(stocks.contains(symbol)) 
    { 
     return; 
    } 

    int row = stocksFlexTable.getRowCount(); 
    stocks.add(symbol); 
    stocksFlexTable.setText(row, 0, symbol); 
    Button removeStockButton = new Button("x"); 

    removeStockButton.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      int indexOf = stocks.indexOf(symbol); 
      stocks.remove(indexOf); 
      stocksFlexTable.removeRow(indexOf + 1); 

     } 
    }); 

    stocksFlexTable.setWidget(row, 3, removeStockButton); 

    refreshWatchList(); 
} 

Répondre

1

Ma question est, comment est-il possible que indexOf attr est réglé, quand u Do not entrer dans cette partie du code lorsque u ajouter un nouveau stock, u entrer seulement partie lorsque u cliquez sur le bouton Supprimer.

Lisez à propos de anonymous inner classes en tant qu'écouteurs d'événements. new ClickHandler() fournit un gestionnaire à chaque bouton, qui attrape l'événement click, avec la fonctionnalité qui supprimera la ligne, chaque fois que le bouton de suppression spécifique est pressé. Chaque bouton a son propre clickHandler.

indexOf n'est pas un grand nom pour une variable. Je préfère tenir à removedIndex, utilisé dans l'exemple de code www.gwtproject.org:

// Add a button to remove this stock from the table. 
    Button removeStockButton = new Button("x"); 
    removeStockButton.addClickHandler(new ClickHandler() { 
     public void onClick(ClickEvent event) { 
      int removedIndex = stocks.indexOf(symbol); 
      stocks.remove(removedIndex); 
      stocksFlexTable.removeRow(removedIndex + 1); 
     } 
    }); 
    stocksFlexTable.setWidget(row, 3, removeStockButton);