2012-03-06 8 views
0

저는 주식 추가 및 제거와 가격 및 변동을 확인할 수있는 자습서를 작성하려고합니다. 이 자습서에서는 GUI 빌더 인 GWT Designer를 사용하여 GWT 자습서를 기반으로 Stock Watcher 응용 프로그램을 만들고 설계하는 방법을 보여줍니다. 내가 웹 응용 프로그램을 실행할 때windowbuilder 자습서가 작동하지 않습니다.

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); 
    } 
} 

, 내가 주식을 추가 할 수 있습니다

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

은 지금까지 나는 SW.java가 있습니다. 그러나 프로그램은 불량한 주식 이름과 허용 가능한 이름을 구별합니다. 대신 "잡히지 않은 예외가 이스케이프 처리됨"오류가 발생하고 프로그램이 실제로 아무 것도하지 않습니다. 이 문제를 어떻게 해결합니까?

답변

0

코드를 통해 디버거와 단일 단계를 사용하십시오. addStock의 첫 번째 줄에 중단 점을 설정하고 어떤 줄이 충돌하는지 찾으십시오. 어떤 라인을 찾았 으면 라인을 측정하여 문제의 원인이 무엇인지 알아냅니다. 라인을보고 문제를 추론 할 수 없다고 가정합니다.

관련 문제