माउस व्हील का उपयोग करते समय मैं JScrollPane में स्क्रॉल गति कैसे बढ़ा सकता हूं?


94

मैं JScrollPane.setWheelScrollingEnabled(boolean)माउस व्हील स्क्रॉलिंग को सक्षम या अक्षम करने की विधि देखता हूं । क्या स्क्रॉलिंग की गति को समायोजित करने का कोई तरीका है, हालांकि? यह, मेरी राय में, ludicrously धीमी गति से है। कोई फर्क नहीं पड़ता कि मैं किस आकार का विंडो बनाता हूं, स्क्रॉलिंग तीन पिक्सेल प्रति क्लिक है। मैं चाहूंगा कि यह उससे कहीं अधिक हो।

कोई विचार?


4
नोट: जावा स्क्रिप्ट के समकक्ष किसी को भी देखने के लिए , jScrollPane (jQuery) में माउस व्हील को गति दें देखें ।
बोअन

जवाबों:


191

आप यह कोशिश कर सकते हैं:

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);

2
सुंदर। मैंने यह भी देखा कि यह स्क्रॉल बार में ऊपर और नीचे तीर को प्रभावित करता है, जो बहुत वांछित है।
एरिक रॉबर्टसन

1
@AlizainPrasla - जब यह स्क्रॉल पैनल इनिशियलाइज़ हो रहा है।
StKiller

आप स्क्रॉल बॉक्स और स्क्रॉल पट्टी में ऊपर या नीचे तीर के बीच के क्षेत्र में क्लिक करने से इसे कैसे प्रभावित करेंगे?
रूण

@Rune - लगता है कि स्क्रॉलबार माउस स्थिति पर सेट है, यूनिट वृद्धि मूल्य की अनदेखी कर रहा है।
स्टिलर

@ AndreiPodoprîgora आपको ध्यान देना चाहिए कि माउस व्हील (या एक अलग डिवाइस जो स्क्रॉल करने की अनुमति देता है), एरो कीज़ और स्क्रॉल बार एरो के साथ स्क्रॉल करने पर यह मान केवल स्क्रॉल की गति को बदल देता है। यह मान उस गति को प्रभावित नहीं करेगा जब स्क्रॉल पट्टी घुमने के साथ स्क्रॉल फलक चलती है। इस मूल्य को बदलना बहुत कठिन है। यदि आप इसे प्राप्त करना चाहते हैं, तो आपको स्क्रॉलबार में कस्टम समायोजन श्रोताओं को जोड़ना चाहिए और इसे बदलना होगा।
बजे टिम विज़े

12

स्क्रॉलबार की इकाई वृद्धि को एक बड़ी संख्या पर सेट करने का एक तरीका होगा:

scrollPane.getVerticalScrollBar().setUnitIncrement(20);

10

यदि आप माउस व्हील स्क्रॉल राशि को स्क्रॉलबार यूनिट के अयोग्य सेट करना चाहते हैं, तो आप माउस व्हील कंट्रोलर का उपयोग कर सकते हैं ।


यह क्या लाभ प्रदान करता है कि मुझे कोड की एक पंक्ति लिखने के बजाय अपनी परियोजना में एक अतिरिक्त वर्ग शामिल करना चाहिए?
एरिक रॉबर्टसन

2
@ ErickRobertson, यह सिर्फ आपको अतिरिक्त लचीलापन देने का इरादा था। डिफ़ॉल्ट स्क्रॉलिंग के लिए यूनिट वृद्धि मूल्य का 3 गुना है। एक JTable के साथ उदाहरण के लिए पंक्ति वृद्धि और डिफ़ॉल्ट स्क्रॉलिंग के लिए यूनिट वेतन वृद्धि 3 पंक्तियों होगी। यदि किसी कारण से आपकी आवश्यकता एक समय में एक पृष्ठ या 5 पंक्तियों को स्क्रॉल करने की है, तो आप उस इकाई मान को जोड़-तोड़ कर सकते हैं। इसके अलावा डिफ़ॉल्ट पंक्ति की ऊंचाई प्रत्येक एलएएफ के लिए अलग हो सकती है। एक सापेक्ष आधार पर स्क्रॉल राशि में हेरफेर करके आपके पास बेहतर क्रॉस प्लेटफ़ॉर्म समर्थन है।
कैमिक्र

मान '3' (स्क्रॉल करने के लिए इकाइयाँ) सिस्टम कंट्रोल पैनल से आता है, जिसे जावा सम्मानित करता है, जिससे आप इसे सिस्टम-वाइड संशोधित कर सकते हैं।
ल्यूक उशरवुड

9

आप स्क्रॉलबार के लिए यूनिट वेतन वृद्धि सेट करके ऐसा कर सकते हैं। उदाहरण देखें।

yourScrollPane.getVerticalScrollBar().setUnitIncrement(16);

2

एक त्वरित खोज ने इस पृष्ठ को लाया: कैसे mousewheel उपयोगकर्ताओं के लिए JScrollPane स्क्रॉलिंग गति को बढ़ाया जाए । यह पता चलता है कि स्क्रॉल वेतन वृद्धि स्क्रॉल बार ( JScrollBar.setUnitIncrement) की एक संपत्ति है और स्क्रॉल फलक नहीं है।


0

मैं अपने स्क्रॉलपैन में 32000 लाइनों के माध्यम से पढ़ने के लिए एक बेहतर तरीका खोजने की कोशिश कर रहा था

इसे इस्तेमाल करे

scrollPane.getVerticalScrollBar().setUnitIncrement(100); scrollPane.getViewport().putClientProperty("EnableWindowBlit", Boolean.TRUE); scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);


0

अधिक सटीक नियंत्रण के लिए, स्क्रॉल किया जा रहा घटक स्क्रॉल करने योग्य इंटरफ़ेस लागू कर सकता है। यह आपको स्क्रॉलिंग यूनिट आकार (तीर बटन और तीर कुंजी) और स्क्रॉल ब्लॉक आकार (माउस व्हील) की गतिशील गणना करने की अनुमति देता है।

स्क्रॉल पैन का उपयोग कैसे करें


-1

आप भी इसका इस्तेमाल कर सकते हैं।

SwingUtil.setScrollUnitIncrement(yourScrollPane);


हम्म ... स्विंगंगिल क्या है? विधि मानकर दिए गए स्क्रॉलप के वेतन वृद्धि को किस मूल्य पर और किस स्क्रॉल के लिए सेट किया गया है?
क्लियोपेट्रा

-1

स्क्रॉल को तेज करने के लिए मेरा समाधान:

  1. स्क्रॉलबार का पैरामीटर जोड़ें:

    ScrollPane.getVerticalScrollBar ()। putClientProperty ("JScrollBar.fastWheelScrolling", सच);

  2. पहिया श्रोता को लागू करें (jViewport के अंदर घटक पर):

    public void mouseWheelMoved(MouseWheelEvent e) {
        boolean isCtrl = (e.getModifiersEx() & MouseWheelEvent.CTRL_DOWN_MASK) != 0;
        boolean isShift = (e.getModifiersEx() & MouseWheelEvent.SHIFT_DOWN_MASK) != 0;
    
        MouseWheelEvent eventToDispatch = e;
        if (isCtrl || isShift) {
            int amountMulti = 1;
            int rotMulti = 1;
            if (isCtrl) {
                amountMulti *= 10;
                if (isShift) {
                    amountMulti *= 5;
                    rotMulti *= 2;
                }
            }
            int mod = e.getModifiers() & ~InputEvent.CTRL_MASK & ~InputEvent.SHIFT_MASK;
            int modEx = e.getModifiersEx() & ~MouseWheelEvent.CTRL_DOWN_MASK & ~MouseWheelEvent.SHIFT_DOWN_MASK;
            eventToDispatch = new MouseWheelEvent(this, e.getID(), e.getWhen()
             , mod | modEx, e.getX(), e.getY()
             , e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger()
             , e.getScrollType(), e.getScrollAmount()*amountMulti, e.getWheelRotation()*rotMulti
             , e.getPreciseWheelRotation()*amountMulti*rotMulti);
        }
    
        getParent().dispatchEvent(eventToDispatch);
    }

    व्हीलरोटेशन की वृद्धि आवश्यक है: अन्यथा स्क्रॉल लाइनों की संख्या स्क्रीन के आकार तक सीमित होगी।


मैंने कोड तय कर लिया है ताकि क्षैतिज स्क्रॉलिंग को रोकने के लिए SHIFT और CTRL झंडे हटा दिए जाएं। मुझे यकीन है कि jdk वालों ने मेरी मूल पोस्ट के बाद jdk में शिफ्ट की के साथ क्षैतिज स्क्रॉलिंग जोड़ दी है। डाउनवोटर्स: कृपया अपने डाउनवोट्स को हटा दें यदि समाधान अभी आपके लिए काम कर रहा है या एक टिप्पणी पोस्ट करें और बताएं कि क्या अभी भी गायब है।
रिकू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.