2009-03-06 15 views
3

Herhangi bir kullanıcının bir Swing bileşeninde barındırılan karmaşık bir SWT UI'yi çalıştırmaya çalışırken herhangi bir deneyimi olup olmadığını merak ediyordum.Bir Swing Uygulaması içinde SWT bileşenlerini çalıştırma

Çok basit bir demo çekmeyi başardım, ancak başka biri denediyse ve başarısız olduysa veya bunu başardıysa deneyimlerinden öğrenmek harika olurdu.

Uygulamamı yinelemek, bir Swing uygulamasıdır. Karmaşık bir SWT UI bileşenini kullanmak istiyorum (sürükle ve bırak, açılır pencereler ve iletişim kutuları) - bunu yapan herhangi biri var mı?

cevap

3

Daha önce aynı uygulamada/projede olmamasına rağmen, hem Swing hem de SWT kullandım.

Bileşenleri aynı pencerelerde birlikte karıştırmaya çalışmadığınız sürece, her birini belirli bir pencere öğesi kümesini kullanarak tamamen ayrı pencerelere/iletişim kutularına sahip olamayacağınız için bir neden göremiyorum. Bununla birlikte, SWT ve Swing'i tek bir pencerede karıştırmaya çalışmak, büyük ihtimalle hiçbir zaman işe yaramaz ya da en azından bir çok sorun yaratır çünkü her iki widget seti de tamamen farklı çizim/çizim araçlarına dayanır - Swing'in bileşenleri doğrudan Java'ya aktarılır ve SWT, temel işletim sisteminden tamamen ayrılırken, SWT, GUI oluşturmanın tümünü (veya çoğunu) yapmak için altta yatan işletim sistemine açık bir şekilde güvenir. İkisini karıştırmaya çalışmak her türlü soruna yol açabilir. Tabii ki, her zamanki “bu tavsiye edilen bir uygulama değil” cevabını da atacağım: Burada aklınızda bazı özel hedefler yoksa, aynı uygulamada farklı gereç kümelerini karıştırmak iyi bir şey değildir. fikir. Swing ve SWT'nin tamamen farklı iki felsefesi ve altta yatan mimarisi var. Aslında SWT, IBM/OTI'nin Swing ile yapılan yaklaşımı beğenmediğinden ve kendi widget'larını uygulamaya karar vermesinden doğmuştur. GUI widget'larına böylesine zıt yaklaşımlar ile, ikisini bir araya getirmekten ziyade, sadece birini seçip ona yapışmayı tercih etmelisiniz.

2

Karıştırma Swing ve SWT, yapılacak en iyi şey değildir, ancak seçeneğiniz yoksa öldürmek çok zor bir canavar değildir. Sadece kodunuz boyunca bazı kuralları/standartları uygulamaya çalışın. Örneğin. Swing'teki tüm iletişim kutularını saklayın (gerek yok ise ikişeyin bir karışımını kullanmayın), Swing ve SWT bileşenleri arasında ayrım yapmak için adlandırma kurallarını kullanın. Swing ve SWT'nin yolunun iyi olduğundan emin olun. Bileşenler, karmaşık bir kullanıcı arabirimi sorunlarının üstesinden gelmeye başlamadan önce OS/JVM tarafından işlenir.

Dikkat edilmesi gereken bir şey, Swing ve SWT bileşenleri arasında sürükle ve bırak işlemidir. Bu biraz zor, ama özellikle de özel veri türlerine atmaya başlarsanız.

İlgili konular