2012-03-06 3 views
0

Я пытаюсь сделать учебник, который позволяет добавлять и удалять запасы и свидетельствовать о их цене и изменении. В этом учебном пособии показано, как использовать построитель GUI, GWT Designer, для создания и разработки приложения Stock Watcher на основе учебника GWT.учебник по сборке окон не работает

http://code.google.com/webtoolkit/tools/gwtdesigner/tutorials/stockwatcher.html#design_ui

До сих пор я SW.java:

package edu.gatech.client; 
import java.util.ArrayList; 

import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.event.dom.client.ClickEvent; 
import com.google.gwt.event.dom.client.ClickHandler; 
import com.google.gwt.event.dom.client.KeyCodes; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.ui.Button; 
import com.google.gwt.user.client.ui.RootPanel; 
import com.google.gwt.user.client.ui.TextBox; 
import com.google.gwt.user.client.ui.VerticalPanel; 
import com.google.gwt.user.client.ui.FlexTable; 
import com.google.gwt.user.client.ui.HorizontalPanel; 
import com.google.gwt.user.client.ui.Label; 
import com.google.gwt.event.dom.client.KeyPressHandler; 
import com.google.gwt.event.dom.client.KeyPressEvent; 

/** 
* Entry point classes define <code>onModuleLoad()</code>. 
*/ 
public class SW implements EntryPoint { 
    private RootPanel rootPanel; 
    private FlexTable stocksFlexTable; 
    private HorizontalPanel addPanel; 
    private VerticalPanel mainWindow; 
    private TextBox newSymbolTextBox; 
    private Button addButton; 
    private Label lastUpdatedLabel; 
    private ArrayList <String> stocks = new ArrayList<String>(); //Add this line 



     public void onModuleLoad() { 
     rootPanel = RootPanel.get(); 

     mainWindow = new VerticalPanel(); 
     rootPanel.add(mainWindow, 10, 10); 
     mainWindow.setSize("267px", "175px"); 

     FlexTable stocksFlexTable = new FlexTable(); 

     //Add these lines 
     stocksFlexTable.setText(0, 0, "Symbol"); 
     stocksFlexTable.setText(0, 1, "Price"); 
     stocksFlexTable.setText(0, 2, "Change"); 
     stocksFlexTable.setText(0, 3, "Remove"); 
     mainWindow.add(stocksFlexTable); 

     addPanel = new HorizontalPanel(); 
     rootPanel.add(addPanel, 10, 200); 
     addPanel.setSize("267px", "68px"); 

     newSymbolTextBox = new TextBox(); 
     newSymbolTextBox.addKeyPressHandler(new KeyPressHandler() { 
      public void onKeyPress(KeyPressEvent event) { 
       if (event.getCharCode() == KeyCodes.KEY_ENTER){ 
        addStock(); 
       } 
      } 
     }); 


     addPanel.add(newSymbolTextBox); 
     newSymbolTextBox.setWidth("211px"); 

     addButton = new Button("Add"); 
     addButton.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       addStock(); 
      } 
     }); 


     addPanel.add(addButton); 

     lastUpdatedLabel = new Label("New Label"); 
     rootPanel.add(lastUpdatedLabel, 48, 274); 



    } 

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

     // Stock code must be between 1 and 10 chars that are numbers, letters, or dots. 
     if (!symbol.matches("^[0-9A-Z\\.]{1,10}$")) { 
      Window.alert("'" + symbol + "' is not a valid symbol."); 
      newSymbolTextBox.selectAll(); 
      return; 
     } 

     newSymbolTextBox.setText(""); 

    // don't add the stock if it's already in the watch list 
     if (stocks.contains(symbol)) 
      return; 

     // add the stock to the list 
     int row = stocksFlexTable.getRowCount(); 
     stocks.add(symbol); 
     stocksFlexTable.setText(row, 0, symbol); 

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

При запуске веб-приложения, я не могу добавить запас. Однако программа проводит различие между плохими именами акций и приемлемыми. Вместо этого я получаю ошибку «неперехваченное исключение», и программа на самом деле ничего не делает. Как устранить эту проблему?

ответ

0

Используйте отладчик и один шаг через код. Установите точку останова на первой строке addStock и найдите, какая строка выйдет из строя. Как только вы обнаружите, какая строка вы затем запишите линию, чтобы узнать, какой аспект вызывает проблему, - предположив, что вы не можете определить проблему, посмотрев на эту строку.

Смежные вопросы