2010-11-03 20 views
5

Gxt ile çalışıyorum. Odağı, sayfadaki ilk etkin alana ayarlamam gerekiyor. Ama çok fazla sayfam var ve bu davranışı merkezileştirmek istiyorum. Gxt'de dokümantasyon eksikliği var, bu yüzden birilerinin böyle bir problemle karşılaşıp karşılaşmadığını ve bana yardımcı olabileceğini merak ediyorum.Gxt odak yönetimi

Şimdi ben com.extjs.gxt.ui.client.aria.FocusManager bulundu ama bunu nasıl kullanabileceğinizi kesinlikle belli değildir var her bileşenin sınıfına

protected void resetFocus() { 
    combobox.focus(); 
} 

@Override 
public void show() { 
    super.show(); 
    resetFocus(); 
} 

böyle gider. Ya da belki de odak alanına göre bileşen üzerinde gitmek gibi alan zinciri almak da mümkündür. Ve üst sınıf için resetFocus yöntemini taşıyabilirim. O

protected void resetFocus() { 
    *getFocusChain().get(0).focus();* 
} 
+1

Bize kodunuzu gösterebilir misiniz? İnsanların sizin probleminiz ile ilgili yardım etmek istemediklerini, gereksiz bir görev olarak adlandırdığınızda, problemin araştırma bölümünde tembel görünmesini sağlar. – Woot4Moo

+0

Teşekkürler, haklısınız! Gönderiimin bana en iyi yanı olmadığını gösterdim. Tekrar yazacağım. – Zalivaka

+0

yeniden yazılmıştır, eleştiri ve doldurma ihtiyacı için açık. – Zalivaka

cevap

2

Odak sonra biraz gecikme işlemek

Smth gibi Yani Scheduler.get(). scheduleDeferred yöntemi kullanmak zorunda. Veya gwt 1.7 veya öncesinde DeferredCommand.

Kullanım örneği; Geçen yanıta dayalı

Scheduler.get().scheduleDeferred(new ScheduledCommand() {

@Override 
public void execute() { 
    widget.focus(); 
    widget.el().focus(); 
    widget.getElement().focus(); 
} 

});

+0

Hiç işe yaramıyor. Bir kere uygulayabileceğim bir çözüm arıyordum ve focus() kodunu kopyalayıp yapıştırmadım. Kendi odak yönetim sistemimi yaptım, bu yüzden soru artık gerçek değil. – Zalivaka

+0

Çözümünüzü neden burada paylaşmıyorsunuz? Belki de çözümünüz diğer insanlara yardımcı olacaktır. –

+0

En azından benim için çalıştı. Ben programDeferred işe yaramazsa programFinally kullanıyordum, hile yaptı. Sadece bazıTextField.focus() kullandım, GXT 3'te yeterli görünüyor. – PhiLho

3

, bunu aşağıdakileri yaparak bir GXT3 penceresinde çalışmak lazım: penceresi açılır

@Override 
public void show() { 
    super.show(); 
    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { 
     @Override 
     public void execute() { 
      field.focus(); 
     } 
    }); 
} 

Bu şekilde, alan odak vardır ve mümkün yazmaya başla.