के बाद स्थिति। (यदि स्लाइडर बिंदु 47 पर है और मैं 5 क्लिक करता हूं तो यह 5 के बजाय 37 पर कूद जाएगा)। JSliders का उपयोग करते समय इसे बदलने का कोई तरीका है, या क्या मुझे एक और डेटास्ट्रक्चर का उपयोग करना है?JSlider प्रश्न: जब भी मैं एक JSlider यह बजाय मौके मैं वास्तव में क्लिक करने के लिए कूद के क्लिक करने की दिशा में तैनात हो जाता है एक majorTick क्लिक leftclick
उत्तर
के रूप में विचित्र रूप में इस लग सकता है, यह वास्तव में देखो और महसूस जो इस व्यवहार को नियंत्रित करता है। BasicSliderUI
पर एक नज़र डालें, जिस विधि को आपको ओवरराइड करने की आवश्यकता है वह scrollDueToClickInTrack(int)
है।
जहां उपयोगकर्ता ट्रैक पर क्लिक किया के सबसे नजदीक मूल्य के लिए JSlider
का मान सेट करने के लिए, आप कुछ फैंसी पैंट अनुवाद करने के लिए के बीच माउस एक वैध ट्रैक मूल्य के लिए getMousePosition()
से निर्देशांक, आवश्यकता होगी ध्यान में रखकर Component
की स्थिति को खाता करें, यह आदि के बीच अभिविन्यास, आकार और दूरी है। valueForXPosition(int xPos)
और valueForYPosition(int yPos)
:
JSlider slider = new JSlider(JSlider.HORIZONTAL);
slider.setUI(new MetalSliderUI() {
protected void scrollDueToClickInTrack(int direction) {
// this is the default behaviour, let's comment that out
//scrollByBlock(direction);
int value = slider.getValue();
if (slider.getOrientation() == JSlider.HORIZONTAL) {
value = this.valueForXPosition(slider.getMousePosition().x);
} else if (slider.getOrientation() == JSlider.VERTICAL) {
value = this.valueForYPosition(slider.getMousePosition().y);
}
slider.setValue(value);
}
});
यह व्यवहार ओएस से ली गई है सौभाग्य से, BasicSliderUI
हमें ऐसा करने के दो आसान कार्यों देता है। क्या आप वाकई इसे फिर से परिभाषित करना चाहते हैं और उपयोगकर्ताओं को भ्रमित करना चाहते हैं? मुझे ऐसा नहीं लगता। ;)
यह सवाल वर्ष की तरह है, लेकिन मैं सिर्फ अपने आप को इस समस्या भर में भाग गया। यह मेरा समाधान है:
JSlider slider = new JSlider(/* your options here if desired */) {
{
MouseListener[] listeners = getMouseListeners();
for (MouseListener l : listeners)
removeMouseListener(l); // remove UI-installed TrackListener
final BasicSliderUI ui = (BasicSliderUI) getUI();
BasicSliderUI.TrackListener tl = ui.new TrackListener() {
// this is where we jump to absolute value of click
@Override public void mouseClicked(MouseEvent e) {
Point p = e.getPoint();
int value = ui.valueForXPosition(p.x);
setValue(value);
}
// disable check that will invoke scrollDueToClickInTrack
@Override public boolean shouldScroll(int dir) {
return false;
}
};
addMouseListener(tl);
}
};
क्या इस समाधान का मतलब यह नहीं है कि अब आप स्लाइडर को स्थानांतरित करने के लिए स्क्रॉल व्हील का उपयोग नहीं कर सकते? – ninesided
+1, मैंने माउसमोशन लिस्टनर को हटाने और जोड़ने के लिए थोड़ा बदलाव किया। यह एक मामूली कॉस्मेटिक परिवर्तन देता है जिसमें माउस स्लाइडर अंगूठे में केंद्रित रहेगा क्योंकि आप अंगूठे के बाएं किनारे पर कूदने के बजाए अंगूठे को खींचते हैं। – camickr
- 1. क्या यह JSlider में एक बग है?
- 2. JSlider
- 3. JSlider
- 4. युगल के लिए JSlider
- 5. क्लिक करने के लिए
- 6. जब क्लिक एक संवाद
- 7. एंड्रॉइड में - मैं एक क्लिक करने योग्य स्पेन
- 8. शरीर में div छुपाएं क्लिक करें, जब मैं div पर क्लिक करता हूं तो यह
- 9. दो बार क्लिक करने
- 10. एंड्रॉइड: क्लिक करने योग्य = "सत्य" मतलब यह है कि यह क्लिक करने योग्य नहीं है?
- 11. कैसे एक बटन है कि क्लिक के rel मूल्य प्राप्त करने की कोशिश क्लिक किया तत्व
- 12. एक क्लिक के बाद एक सबमिट बटन को अक्षम करने
- 13. क्लिक करने के बजाय होवर के साथ ट्रिगर फेंसीबॉक्स?
- 14. क्लिक के
- 15. NSTableView टेक्स्ट संपादित करने के लिए सेल में कहीं भी क्लिक करने के लिए कैसे देखें?
- 16. सीएसएस - एक div "क्लिक करने योग्य"
- 17. क्लिक करने योग्य यूआरएल?
- 18. क्या मैं एक टीआर क्लिक घटना के अंदर एक बटन क्लिक को बाहर कर सकता हूं?
- 19. क्लिक अनदेखी करने के लिए कैसे घटना जब बच्चों
- 20. जब DetailDesclosure बटन क्लिक
- 21. क्लिक करने योग्य लेबल
- 22. jquery टॉगल: पृष्ठ पर क्लिक करने के लिए लिंक पर क्लिक करें
- 23. कैसे एक ईमेल पता क्लिक करने योग्य बनाने के लिए?
- 24. एक डीआईवी अनुभाग कैसे क्लिक करने योग्य बनाने के लिए?
- 25. एक Relativelayout क्लिक करने योग्य कैसे बनाने के लिए?
- 26. क्लिक
- 27. विजुअल स्टूडियो पर क्लिक करने के परिणाम पर क्लिक करें गलत विंडो में कोड खोलता है
- 28. अक्षम स्क्रॉल जब एक लिंक पर क्लिक करने
- 29. क्या पैरेंट क्लिक करने योग्य सभी बच्चे तत्व को क्लिक करने योग्य बनाता है?
- 30. फोर्स बटन क्लिक करने के बाद
यह विचित्र विचित्र, अच्छा पकड़ है। स्क्रॉल करने के लिए इनपुट कैसे पता लगाने की कोशिश कर रहा है .. (int) बनाया गया है। दिशा निर्धारित करने के लिए वहां कुछ जांच होनी चाहिए जहां मैं स्लाइडरपोजिशन की तुलना में क्लिक करता हूं। इसके लिए निर्धारित करने के लिए कुछ विधि को यह जानने की ज़रूरत नहीं है कि स्लाइडर पर मैं कहां क्लिक करता हूं? –
वास्तव में नहीं, दिशा आसान है - क्षैतिज ट्रैक के लिए इसे केवल यह जानने की आवश्यकता है कि माउस क्लिक का एक्स समन्वय स्लाइडर हैंडल के एक्स समन्वय से कम या उससे अधिक है। – ninesided
हाँ, लेकिन यह जानने के लिए कि क्या यह एक्स समन्वय से कम या उससे अधिक है, आपको यह जानने की आवश्यकता नहीं होगी कि आप स्लाइडर पर तुलना करने के लिए क्लिक करते हैं? यदि स्लाइडर हैंडल 50 पर है तो आपको यह जानने की जरूरत है कि आप कहां क्लिक करते हैं कि यह स्थिति है या <50, नहीं? –