English 中文(简体)
GWT - flextable - 增加重点清单
原标题:GWT - flextable - adding focus listenter

I m working on a editable flextable. When a cell is clicked, it turns into a textbox within that particular cell. The textbox contains the text of the original cell clicked. Since the "addFocustListener" function is deprecated, which functions should I use to copy the new text typed into the textbox into the flextable.

我的法典如下:

package testproject3.client;

import java.util.ArrayList;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FocusListenerAdapter;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class ViewAndEditCompWidget 
{
    VerticalPanel vPanel=null;
    FlexTable table =null;



    public VerticalPanel getvPanel() 
    {
        table = new FlexTable();
        vPanel = new VerticalPanel();

        table.setText(0, 0, " Name");
        table.setText(0, 1, " Address aasdfasfasfdasfasfdasfasdfasfasdfasfsafasdfsadfsdfasfsdfasdfsafasdfasdfasdf");        

        table.setText(1, 0, " My Name");
        table.setText(1, 1, " 123456789  asfasdfasfdddddddddddddddddddddddddddd");

        makeTableEditable();
        vPanel.add(table);
        return vPanel;
    }
    public void makeTableEditable()
    {
        table.addClickHandler(new ClickHandler()
        {
            @SuppressWarnings("deprecation")
            @Override
            public void onClick(ClickEvent event) 
            {
                final int cellIndex = table.getCellForEvent(event).getCellIndex();
                final int rowIndex =    table.getCellForEvent(event).getRowIndex();

                //Cell cell = myTable.getCellForEvent(event);
                //int receiverRowIndex = cell.getRowIndex(); 

                //make sure that it is not the header row
                if(rowIndex != 0)
                {
                    //make a new Textbox
                    final TextBox textBox = new TextBox();
                    textBox.setText(table.getText(rowIndex, cellIndex));
                    table.setWidget(rowIndex, cellIndex, textBox);

                    /*********************************************
                    DeferredComman is deprecated
                    *********************************************/
                    DeferredCommand.addCommand(new Command()
                    {
                        @Override
                        public void execute() 
                        {
                            textBox.setFocus(true);
                            textBox.selectAll();

                        }

                    }
                    );

                    /*********************************************
                    addFocusListener is also deprecated
                    *********************************************/
                    textBox.addFocusListener(new FocusListenerAdapter()
                    {
                        public void onLostFocus(Widget sender)
                        {
                            table.setText(rowIndex, cellIndex, textBox.getText());
                        }
                    }
                    );

                    //add a keyboard listener to the text box
                    //so that it reacts to enter and ESC key
                    textBox.addKeyPressHandler(new KeyPressHandler() 
                    {
                        @Override
                        public void onKeyPress(KeyPressEvent event) 
                        {
                            //if key pressed was ENTER, copy the text box s text into the table
                            if (event.getCharCode() == KeyCodes.KEY_ENTER) 
                            {
                                table.setText(rowIndex, cellIndex, table.getText(rowIndex, cellIndex));
                            }
                            else if (event.getCharCode() == KeyCodes.KEY_ESCAPE) 
                            {
                                table.setText(rowIndex, cellIndex, textBox.getText()+"");
                            }
                        }//onKeyPress
                    });//addKeyPressHandler
                }//if
            }

        });

    }

}

DeferedCommand and add FocustListener are deprecated. 什么地方可以使用?

我的新法典如下:

public class CellTableExample implements EntryPoint {

  /**
   * A simple data type that represents a contact.
   */
  private static class Contact {
    private final String address;
    private final Date birthday;
    private final String name;

    public Contact(String name, Date birthday, String address) {
      this.name = name;
      this.birthday = birthday;
      this.address = address;
    }
  }

  /**
   * The list of data to display.
   */
  @SuppressWarnings("deprecation")
  private static final List<Contact> CONTACTS = Arrays.asList(
      new Contact("John", new Date(80, 4, 12), "123 Abc Avenue"), 
      new Contact("Joe", new Date(85, 2, 22), "22 Lance Ln fasfasdfasfdasdfasfasdfasfasdfasfasfasdfasdfasdf"), 
      new Contact("Tom", new Date(85, 3, 22), "33 Lance Lnasdfasfdasdfffffffffffffffffff"), 
      new Contact("Jack", new Date(85, 4, 22), "44 Lance Lnsddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"));

  public void onModuleLoad() {
    // Create a CellTable.
    final CellTable<Contact> table = new CellTable<Contact>();
    // Display 3 rows in one page
    table.setPageSize(3);

    // Add a text column to show the name.
    TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
      @Override
      public String getValue(Contact object) {
        return object.name;
      }
    };
    table.addColumn(nameColumn, "Name");

    // Add a date column to show the birthday.
    DateCell dateCell = new DateCell();
    Column<Contact, Date> dateColumn = new Column<Contact, Date>(dateCell) {
      @Override
      public Date getValue(Contact object) {
        return object.birthday;
      }
    };
    table.addColumn(dateColumn, "Birthday");

    // Add a text column to show the address.
    TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
      @Override
      public String getValue(Contact object) {
        return object.address;
      }
    };
    table.addColumn(addressColumn, "Address");

    // Associate an async data provider to the table
    // XXX: Use AsyncCallback in the method onRangeChanged
    // to actaully get the data from the server side
    AsyncDataProvider<Contact> provider = new AsyncDataProvider<Contact>() {
      @Override
      protected void onRangeChanged(HasData<Contact> display) {
        int start = display.getVisibleRange().getStart();
        int end = start + display.getVisibleRange().getLength();
        end = end >= CONTACTS.size() ? CONTACTS.size() : end;
        List<Contact> sub = CONTACTS.subList(start, end);
        updateRowData(start, sub);
      }
    };
    provider.addDataDisplay(table);
    provider.updateRowCount(CONTACTS.size(), true);

    SimplePager pager = new SimplePager();
    pager.setDisplay(table);

    VerticalPanel vp = new VerticalPanel();
    vp.add(table);
    vp.add(pager);

    // Add it to the root panel.
    RootPanel.get().add(vp);
  }
}
最佳回答

名单张贴在WT,因为有1.6人需要使用处理器。 你们是否看到了一位“FocusHandler”?

From the gwt site - http://code.google.com/webtoolkit/doc/1.6/ReleaseNotes_1_6.html

增加了活动处理器,以取代由Widgets、历史和其他各种班子使用的老活动听众。

ps - also look at 我认为,这是你努力做到的。

问题回答

暂无回答




相关问题
Refresh the UI in gwt

I have created some custom composite widget, which listens to an events (in my case loginEvent). Once the event is caught the state of the widget changes so as the way it should look (in my case I ...

How to create a development/debug and production setup

I recently deployed inadvertently a debug version of our game typrX (typing races at www.typrx.com - try it it s fun). It was quickly corrected but I know it may happen again. After digging on ...

GWT error at runtime: ....style_0 is null

My code works fine in IE 8, but on firefox 3.5, the javascript fails to load. I used firebug to figure out why, and the error I get is (GWT detailed mode) My suspicion is that some style is not ...

GWT s hosted mode not working

I ve been stumped for a while trying to figure out why my GWT demo app isn t working in hosted mode so I went back and downloaded the Google Web Toolkit again, unzipped it and simply went to the ...

How to disable Google Visualizations Tool Tips?

Does anyone know how to disable the tool-tip boxes that popup when a Google Visualizations chart is clicked (Selected)? Following the sample code at Getting Started with Visualizations, the "...

GWT 2 CssResource how to

I have a GWT 1.7 application and I want to upgrade it to GWT 2 Milestone 2. The application uses 2 big external CSS files. In GWT 1.7 I had a public folder and put both the CSS files in the folder and ...

热门标签