2012-06-05 5 views
5

निकालें मैं एक एसडब्ल्यूटी ट्री बनाने की कोशिश कर रहा हूं जिसमें शीर्ष स्तर पर आइकन हैं लेकिन अगले स्तर पर नहीं।SWT TreeItem छवि इंडेंट

Tree Screenshot

वहाँ किसी भी तरह से जो छवि जो मैं का उपयोग नहीं करने के लिए छोड़ दिया गया है लगता है खाली जगह से बचने के लिए है? मैंने निम्नलिखित कोड स्निपेट का उपयोग करने की कोशिश की लेकिन न तो मैं जो चाहता था।

SWT.MeasureItem:

tree.addListener(SWT.MeasureItem, new Listener() 
{ 
    @Override 
    public void handleEvent(Event event) 
    { 
    TreeItem item = (TreeItem)event.item; 
    Image image = item.getImage(); 
    if (image == null) 
    { 
     event.x -= 40; 
    } 
    } 
}); 

SWT.PaintItem:

tree.addListener(SWT.PaintItem, new Listener() 
{ 
    @Override 
    public void handleEvent(Event event) { 
    TreeItem item = (TreeItem)event.item; 
    Image image = item.getImage(); 
    if (image == null) 
    { 
     event.x -= 40; 
    } 
    } 
}); 

दोनों ही मामलों मैं सिर्फ उम्मीद थी कि पाठ बाईं ओर आगे एक सा तैयार किया जा सकता है में।

उत्तर

1

मैंने कुछ और जांच की है। यूजीन के जवाब के अनुसार यह मूल व्यवहार प्रतीत होता है। ध्यान देने योग्य कुछ चीजें हैं।

यदि पेड़ में कोई आइटम नहीं है तो आइकन के लिए कोई स्थान नहीं छोड़ा गया है। हालांकि, आइकन के साथ एक भी आइटम सभी आइटमों को आइकन के लिए स्थान छोड़ने का कारण बनता है।

एक hacky समाधान इस प्रकार लागू किया जा सकता: कोई प्रतीक

  • उपयोग इतना है कि देशी नियंत्रण नहीं आइकन अंतरिक्ष
  • आइटम जहां जैसे पाठ के लिए एक आइकन उपसर्ग चाहते कुछ रिक्त स्थान के लिए छोड़ देता है "" + पाठ
  • एक PaintItem श्रोता है कि अंतरिक्ष पाठ द्वारा छोड़ा में आइकन आप चाहते हैं ड्रॉ जोड़े

यह शायद प्लेटफ़ॉर्म पर और प्रणाली फोंट भर में अच्छी तरह से काम नहीं करता है तो मैं बस करने के लिए तय कर लिया है आइकन रखने के साथ रहते हैं।

2

यह व्यवहार मूल नियंत्रण से आता है और ओएस-विशिष्ट (AFAIR, मैक पर आपको यह समस्या नहीं दिखाई देगी)। हां, कोई आसान फिक्स नहीं है लेकिन कुछ सामान्य आइकन जोड़ें (या बिल्कुल आइकन जोड़ना नहीं)।