2011-07-15 36 views
1

私はsetFocus()に問題があります。なぜそれがテキストボックスで動作しないのですか?setFocus()を動作させることができません

これは私のコードです:

package com.test.test1; 

import com.google.gwt.user.client.ui.Composite; 
import com.google.gwt.user.client.ui.KeyboardListener; 
import com.google.gwt.user.client.ui.VerticalPanel; 
import com.google.gwt.user.client.ui.Label; 
import com.google.gwt.user.client.ui.FlexTable; 
import com.google.gwt.user.client.ui.TextBox; 
import com.google.gwt.user.client.ui.CheckBox; 
import com.google.gwt.user.client.ui.Button; 
import com.google.gwt.event.dom.client.ClickHandler; 
import com.google.gwt.event.dom.client.ClickEvent; 
import com.google.gwt.event.dom.client.KeyCodes; 
import com.google.gwt.event.dom.client.KeyPressHandler; 
import com.google.gwt.event.dom.client.KeyPressEvent; 
import com.google.gwt.user.client.ui.FocusWidget; 

public class Logowanie extends Composite { 
    public Logowanie(final Spr spr) { 

     VerticalPanel verticalPanel = new VerticalPanel(); 
     initWidget(verticalPanel); 

     Label lblZalogujSi = new Label("Zaloguj si\u0119"); 
     lblZalogujSi.setStyleName("title"); 
     verticalPanel.add(lblZalogujSi); 

     FlexTable flexTable = new FlexTable(); 
     verticalPanel.add(flexTable); 

     Label lblLogin = new Label("Login:"); 
     flexTable.setWidget(0, 0, lblLogin); 

     TextBox textBox = new TextBox(); 
     textBox.setFocus(true); 

     flexTable.setWidget(0, 1, textBox); 

     Label lblHaso = new Label("Has\u0142o:"); 
     flexTable.setWidget(1, 0, lblHaso); 

     TextBox textBox_1 = new TextBox(); 
     flexTable.setWidget(1, 1, textBox_1); 

     CheckBox chckbxZapamitajMnie = new CheckBox("Zapami\u0119taj mnie na tym komputerze"); 
     flexTable.setWidget(2, 1, chckbxZapamitajMnie); 

     Button btnZaloguj = new Button("Zaloguj"); 

     KeyPressHandler kph = new KeyPressHandler() { 
      public void onKeyPress(KeyPressEvent event) { 
       if (event.getCharCode() == KeyCodes.KEY_ENTER){ 
        spr.login(); 
       } 
      } 
     }; 

     textBox.addKeyPressHandler(kph); 
     textBox_1.addKeyPressHandler(kph); 

     btnZaloguj.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       spr.login(); 
      } 
     }); 
     flexTable.setWidget(3, 1, btnZaloguj); 
    } 
} 
+0

を呼び出す - これが示唆するものGWTの最新のです! 「申し訳ありませんが抵抗できませんでした」:D – gotomanners

答えて

3

これに伴う問題は、テキストボックスには、あなたがそれでのSetFocus()を実行する前に、ブラウザで描画する必要があるということです。

Scheduler.get().scheduleDeferred(new ScheduledCommand() { 
    public void execute() { 
     textBox.setFocus(true); 
    } 
    }); 

使用このコードの代わりに、平野たぶん、あなたの仕事にもっと焦点を入れてみてくださいsetFocus(true);

関連する問題