SWT-Widget'larda otomatik olarak kimlik oluşturmanın bir yolu var mı? Böylece UI-Testleri bunlara referans verebilir? SeData'yi kullanarak bir kimliği manuel olarak ayarlayabildiğimi biliyorum ancak bu özelliği mevcut bir uygulama için biraz genel bir şekilde uygulamak istiyorum.SWT-Widgets'ta otomatik olarak kimlikler oluşturma
cevap
Display.getCurrent().getShells();
ve Widget.setData();
öğelerini kullanarak uygulamanızda tüm kabuklarınız için kimlikleri yinelemeli olarak atayabilirsiniz. Kimlikleri
Shell []shells = Display.getCurrent().getShells();
for(Shell obj : shells) {
setIds(obj);
}
Sen yöntemle Display.getCurrent().getShells();
ile uygulamadaki tüm aktif (atılmazsa) Kabuklar erişebilir Ayar
. Her bir Shell
'un tüm alt öğeleri arasında geçiş yapabilir ve her Control
yöntemine Widget.setData();
yöntemiyle bir kimlik atayabilirsiniz. Control
o kompozit iç kontrollere sahip olabilen bir Composite
ise
private Integer count = 0;
private void setIds(Composite c) {
Control[] children = c.getChildren();
for(int j = 0 ; j < children.length; j++) {
if(children[j] instanceof Composite) {
setIds((Composite) children[j]);
} else {
children[j].setData(count);
System.out.println(children[j].toString());
System.out.println(" '-> ID: " + children[j].getData());
++count;
}
}
}
, bu benim örnekte bir özyinelemeli çözümü kullanmış sebebidir. Ile
public Control findControlById(Integer id) {
Shell[] shells = Display.getCurrent().getShells();
for(Shell e : shells) {
Control foundControl = findControl(e, id);
if(foundControl != null) {
return foundControl;
}
}
return null;
}
private Control findControl(Composite c, Integer id) {
Control[] children = c.getChildren();
for(Control e : children) {
if(e instanceof Composite) {
Control found = findControl((Composite) e, id);
if(found != null) {
return found;
}
} else {
int value = id.intValue();
int objValue = ((Integer)e.getData()).intValue();
if(value == objValue)
return e;
}
}
return null;
}
: Eğer ben benzer, özyinelemeli, yaklaşım öneririm senin kabukları birinde bir Kontrolü bulmak isterseniz, Şimdi kimliği
tarafından Kontroller bulma
yöntem findControlById()
kolayca onun tarafından bir Control
bulabilirsiniz.
Control foundControl = findControlById(12);
System.out.println(foundControl.toString());
Linkler
- 1. Otomatik olarak sınama durumları oluşturma
- 2. İlişkili kimlikler için MySQL tasarımı
- 3. otomatik istatistik oluşturma
- 4. Eksik kimlikler nasıl eşleştirilir?
- 5. Otomatik oluşturma Tutuculu arayüz
- 6. Bir dosya kaydetme ve dizinleri otomatik olarak oluşturma
- 7. mysql, kayıt oluşturma zaman damgasını otomatik olarak kaydeder
- 8. Tüm Python Paket İçeriği için Otomatik Olarak Belge Oluşturma
- 9. AWS Sonlandırdıktan Sonra Yeni Örneği Otomatik Olarak Oluşturma.
- 10. App Store Gönderme: Hayır Kimlikler
- 11. Otomatik olarak *
- 12. Hazırda Bekletme Otomatik Sürüm Oluşturma
- 13. DBUnit otomatik veri kümesi oluşturma
- 14. Bir java uygulamasında otomatik yol oluşturma
- 15. Geliştirme süresini otomatik olarak izleme
- 16. İş Nesnesi Sınıfları'ndan DataContract sınıflarını otomatik oluşturma
- 17. iPhone: Yapılandırmadaki yürütülebilir dosyayı otomatik olarak yükle
- 18. Otomatik kimlik oluşturma ve eşleme _id NEST
- 19. Alt komutlarla otomatik tamamlama komut dosyası oluşturma
- 20. Android'in bitmapimi otomatik olarak yeniden boyutlandırmasını istemiyorum Otomatik olarak
- 21. UICollectionViewDeğiştirme çağrısı Güncellenmediğinde otomatik olarak otomatik olarak gösterilsin mi?
- 22. Hibernate'in otomatik şema oluşturma ve veritabanı sürüm oluşturma özelliğini birleştirin
- 23. Metin eklendiğinde otomatik kaydırma otomatik olarak kaydırılıyor
- 24. ExpressY render oluşturma düzenini yerel olarak oluşturma
- 25. Çerezler otomatik olarak boşaltılıyor
- 26. Karşılaştırın Özellikleri otomatik olarak
- 27. tekrar otomatik olarak oynatılmaya
- 28. otomatik olarak hesaplanması OpenCV
- 29. Otomatik olarak kaydet Powershell
- 30. Fasulye otomatik olarak alınmıyor