মাউস হুইলটি ব্যবহার করার সময় আমি কীভাবে জেএসক্রোলপ্যানে স্ক্রোলের গতি বাড়িয়ে তুলব?


95

আমি JScrollPane.setWheelScrollingEnabled(boolean)মাউস হুইল স্ক্রোলিং সক্ষম বা অক্ষম করার পদ্ধতিটি দেখতে পাচ্ছি । স্ক্রোলিংয়ের গতি সামঞ্জস্য করার কোনও উপায় আছে কি? এটি আমার মতে হাস্যকরভাবে ধীর। আমি উইন্ডোটি আকারের আকার যাই বলি না, স্ক্রোলিং প্রতি ক্লিকে প্রায় তিন পিক্সেল। আমি এটি চেয়ে অনেক বেশি হতে চাই।

কোন ধারনা?


4
দ্রষ্টব্য: যার যার জাভা স্ক্রিপ্টের সমতুল্য সন্ধান করছেন তাদের জন্য , jScrollPane (jQuery) এর গতি বাড়ানোর মাউস হুইলটি দেখুন
বোয়ান

উত্তর:


195

আপনি এটি চেষ্টা করতে পারেন:

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);

4
সুন্দর। আমি এটিও লক্ষ্য করেছি যে এটি স্ক্রোল বারের উপরের এবং নীচের তীরগুলিকে প্রভাবিত করে যা খুব পছন্দসই।
এরিক রবার্টসন

4
@ অ্যালিজাইনপ্রসলা - এই স্ক্রোল প্যানেলটি শুরু করার সময়।
স্টকিলার

আপনি কীভাবে এটিকে স্ক্রোল বাক্সের মধ্যে এবং স্ক্রোল বারের উপরে বা নীচে তীরগুলির মধ্যে ক্লিক করে প্রভাব ফেলবেন?
রুন

@ রুন - মনে হচ্ছে যে স্ক্রোলবারটি ইউনিট বৃদ্ধির মান উপেক্ষা করে মাউসের অবস্থানে সেট করা আছে।
StKiller

@ AndreiPodoprggora আপনার লক্ষ্য করা উচিত যে এই মানটি পরিবর্তন করা হলে কেবল মাউস হুইল (বা কোনও আলাদা ডিভাইস যা স্ক্রোলিংয়ের অনুমতি দেয়), তীর কী এবং স্ক্রোল বার তীরগুলি দিয়ে স্ক্রোল করে when এই মানটি স্ক্রোল ফলকটি যে গতিতে চলতে চলেছে তার সাথে স্ক্রোল বারের নবটি টেনে আনার সময় প্রভাব ফেলবে না। এই মানটি পরিবর্তন করা খুব কঠিন। আপনি যদি এটি অর্জন করতে চান তবে আপনার উচিত স্ক্রোলবারে কাস্টম সামঞ্জস্য শ্রোতাদের যুক্ত করা এবং এর মানগুলি পরিবর্তন করা।
টিম ভিসি

12

একটি উপায় হ'ল বৃহত্তর সংখ্যায় স্ক্রোলবারের ইউনিট বৃদ্ধি সেট করা হবে:

scrollPane.getVerticalScrollBar().setUnitIncrement(20);

10

আপনি amout আপনি ব্যবহার করতে পারেন স্ক্রলবার ইউনিট মাউস চাকা স্ক্রল পরিমাণ indepedent সেট করতে চান তাহলে মাউস হুইল কন্ট্রোলার


এই সুবিধাটি কী প্রস্তাব করে যে আমার কোডটিতে একটি লাইন কোড লেখার পরিবর্তে আমার অতিরিক্ত ক্লাস অন্তর্ভুক্ত করা উচিত?
এরিক রবার্টসন

4
@ এরিকরবার্টসন, এটি আপনাকে যুক্ত করার নমনীয়তা দেওয়ার জন্য কেবলমাত্র উদ্দেশ্য ছিল। ডিফল্টটি ইউনিট ইনক্রিমেন্ট মান থেকে 3 গুণ স্ক্রোলিংয়ের জন্য। উদাহরণস্বরূপ, জেটিবেলের সাথে ইউনিট ইনক্রিমেন্টটি সারি উচ্চতা এবং ডিফল্ট স্ক্রোলিংয়ের ডিফল্ট তাই 3 টি সারি হবে। যদি কোনও কারণে আপনার প্রয়োজনীয়তাটি একবারে কোনও পৃষ্ঠা বা 5 টি সারি একবারে স্ক্রোল করা হয় তবে আপনি কেবল ইউনিট মানটি ব্যবহার করে তা করতে পারবেন না। এছাড়াও প্রতিটি এলএএফ-এর জন্য ডিফল্ট সারির উচ্চতা পৃথক হতে পারে। তুলনামূলক ভিত্তিতে স্ক্রোল পরিমাণ হেরফের দ্বারা আপনার আরও ভাল ক্রস প্ল্যাটফর্ম সমর্থন রয়েছে।
ক্যামিকার

'3' (স্ক্রোল করার একক) মানটি সিস্টেম কন্ট্রোল প্যানেল থেকে আসে, যা জাভা আপনাকে সম্মান জানায়, এটি আপনাকে সিস্টেম-ব্যাপী সংশোধন করতে সক্ষম করে।
লুক উশরউড

9

আপনি একটি স্ক্রোলবারের জন্য ইউনিট ইনক্রিমেন্ট সেট করে এটি করতে পারেন। উদাহরণ দেখুন।

yourScrollPane.getVerticalScrollBar().setUnitIncrement(16);

2

একটি দ্রুত অনুসন্ধান এই পৃষ্ঠাটি নিয়ে এসেছে: মাউসওহিল ব্যবহারকারীদের জন্য কীভাবে জেএসক্রোলপেন স্ক্রোলিং গতি বাড়ানো যায় । দেখা যাচ্ছে যে স্ক্রোলিং বৃদ্ধি হ'ল স্ক্রোল বারের নিজস্ব সম্পত্তি ( 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. স্ক্রোলবারের প্যারামিটার যুক্ত করুন:

    scrolPane.getVericalScrolBar ()। putClientProperty ("জেএসক্রোলবার.ফেষ্টহিলস্রোলিং", সত্য);

  2. হুইল শ্রোতা প্রয়োগ করুন (জেভিউপোর্টের অভ্যন্তরের উপাদানটিতে):

    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 পতাকাগুলি সরানো হবে are আমি নিশ্চিত যে জেডকে ছেলেরা আমার মূল পোস্টের ঠিক পরে জেডিকে শিফট কী সহ অনুভূমিক স্ক্রোলিং যুক্ত করেছে। ডাউনভোটার্স: সমাধানটি এখন আপনার জন্য কাজ করে যদি আপনার ডাউনভোটগুলি সরিয়ে ফেলুন বা একটি মন্তব্য পোস্ট করুন এবং এখনও কী অনুপস্থিত রয়েছে তা ব্যাখ্যা করুন।
rychu
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.