2012-12-15 23 views
6

पर खींच सकते हैं यदि आप Slider (org.eclipse.swt.widgets.Slider) बनाते हैं तो उस पर getMaximum() पर कॉल करें, मान 100 है। लेकिन जब आप वास्तव में इसकी अधिकतम मूल्य के लिए स्लाइडर खींचकर प्रयास करें, यह केवल तक पहुँच जाता है 90.जावा एसडब्ल्यूटी स्लाइडर .getMaximum() 100 के बराबर है, लेकिन आप इसे केवल 90

मैं इस समस्या दौर काम कर सकते हैं:

sl.setSelection(sl.getMaximum()); // sl.getMaximum() is 100 
int actualMax = sl.getSelection(); // should be 100, but is actually 90 

लेकिन कुछ निश्चित रूप से गलत हो सकता है, कोई है?

+0

चेक स्लाइडर (वेतन वृद्धि) की चौड़ाई। मैं अनुमान लगा रहा हूं कि स्लाइडर अधिकतम वृद्धि से पहले रोकता है। –

उत्तर

5

जैसा कि आप जानते Slider लेकिन ScrollBar विजेट कुछ भी नहीं है, अधिकतम मूल्य निर्धारित किए MAX_VALUE + thumb_value मूल्य के बराबर है।

final Slider slider = new Slider(shell, SWT.NONE); 
    slider.setMaximum(100); 
    slider.setMinimum(0); 
    slider.setThumb(20); 

    slider.addSelectionListener(new SelectionListener() { 

    @Override 
    public void widgetSelected(SelectionEvent e) { 
     System.out.println(slider.getSelection() +" "+ slider.getThumb()); 
    } 

    @Override 
    public void widgetDefaultSelected(SelectionEvent e) { 

     // TODO Auto-generated method stub 

    } 
    }); 
+2

मुझे यह नहीं पता था। लेकिन आपका शुक्रिया। तो अधिकतम मूल्य जो आप वास्तव में स्लाइडर को खींच सकते हैं 'sl.getMaximum() - sl.getThumb() '। मुझे अभी भी लगता है कि यह अधिकतम मूल्य के लिए अधिक प्राकृतिक होगा जो आप इसे 'sl.getMaximum() 'के रूप में खींच सकते हैं। – user1310503

1

मैं विंडोज 7 पर SWT 3.6.1 और SWT 4.2.1 के साथ इस व्यवहार को भी देख सकता हूं।

एक सरल लेकिन किसी भी तरह dissatisfying तरीके का उपयोग करने के लिए होगा:

sl.setMaximum(110); 

तो मान 0 से 100 तक होती है।

+0

यह ** ** सामान्य रूप से काम नहीं करता है (क्योंकि यह अंगूठे मूल्य पर निर्भर करता है - विवरण के लिए मेरा उत्तर देखें)। – Simon

1

हालांकि प्रदान की जवाब समस्या को हल करने में मदद की, यह अभी भी मुझे इसे सही ढंग से लागू करने के लिए के लिए कुछ समय लिया:

इस कोड का प्रयास करें। आप अपने स्लाइडर के साथ मूल्यों 0-100 चयन बनाना चाहते हैं, आपको क्या करना चाहिए:

// we want to have the values 0-100 
slider.setMaximum(100 + slider.getThumb()); 
// this now returns the selected value, which can be from 0-100 
slider.getSelection();