0

首先,大家好。我是新来的,我刚刚开始学习 gwt。关于 stockwatch 示例,我不明白一件事。首先,有添加库存方法,将新库存添加到列表中。在该方法中,我们还添加了删除按钮并将侦听器附加到它。我的问题是,如何设置 indexOf attr,当您在添加新股票时不输入该部分代码时,您只有在单击删除按钮时才输入该部分。但是这段代码有效,我找不到解释为什么..我试图调试应用程序,但仍然无法理解。对不起,我的英语不好。

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

1 回答 1

1

我的问题是,如何设置 indexOf attr,当您在添加新股票时不输入该部分代码时,您只有在单击删除按钮时才输入该部分。

阅读有关作为事件侦听器的匿名内部类。new ClickHandler()为每个 Button 提供一个处理程序,该处理程序捕获单击事件,并具有在按下特定删除按钮时删除该行的功能。每个按钮都有自己的 clickHandler。

indexOf不是一个很好的变量名称。我宁愿坚持使用www.gwtproject.org示例代码中使用的removedIndex :

    // 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);
于 2013-09-04T16:04:33.783 回答