كيفية استخدام لوحة التتبع الخاصة بي للتمرير الأفقي Mousewheel في Scrollpane Java Awt

StackOverflow https://stackoverflow.com/questions/2843314

سؤال

مثل العديد من الفئران الحديثة وأدوات التتبع ، يدعم الكمبيوتر المحمول الخاص بي التمرير الرأسي والأفقي. إنها ميزة إدمان بمجرد أن تعتاد عليها. أريد ببساطة أن تدعم تطبيقات Java الخاصة بي التمرير الأفقي عبر لوحة التتبع/Mousewheel ، لكن في كل مكان أبحث عنه يبدو أن هذا غير ممكن في Java.

أريد حقًا أن يخبرني شخص ما أنني أفعل ذلك بطريقة ما ، هذه الميزة مطلوبة بالفعل السلوك: http://bugs.sun.com/bugdatabase/view_bug.do؟bug_id=6440198

إن عدم القدرة على فعل هذا الشيء البسيط هو في الواقع كسر صفقة للتطبيق الذي أعمل عليه. في الواقع ، لأي تطبيق يمكنني تصوره! لقد استثمرت بعض الوقت في خلفية Java ، لذلك أود حقًا العثور على حل لهذا الشيء البسيط على ما يبدو.

السؤال هو ما الذي يمكنني فعله لتنفيذ هذا السلوك؟ هل تعرضت أحداث مستوى نظام التشغيل الخام لي من قبل جافا ، هل سأحتاج بعد ذلك إلى كتابة هذا من نقطة الصفر؟

import java.awt.*;

public class ScrollExample extends Canvas {

    public void paint(Graphics g) {

        g.setColor(Color.green);
        g.fillOval(0,0,400, 400);

    }

    public static void main(String[] args) {

        ScrollExample b = new ScrollExample();
        Frame f = new Frame ("Scroll Example");

        ScrollPane scroller = new ScrollPane (ScrollPane.SCROLLBARS_ALWAYS);
        scroller.add(b,"Center");
        f.setPreferredSize(new Dimension(500,500));
        f.add ("Center",scroller);
        f.pack();
        f.show();

    }

}

يعمل مثال الأرجوحة مع كل من التمرير الأفقي والعمودي

import java.awt.*;
import javax.swing.*;

public class ScrollExample extends JPanel { 

    public void paint(Graphics g) {

        super.paint(g);

        g.setColor(Color.green);
        g.fillOval(0,0,400, 400);

    }

    public static void main(String[] args) {

        JFrame f = new JFrame ("Scroll Example");
        ScrollExample p = new ScrollExample();
        p.setPreferredSize(new Dimension(1000, 1000));

        JScrollPane scroller = new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scroller.getHorizontalScrollBar().setUnitIncrement(10);
        scroller.getVerticalScrollBar().setUnitIncrement(10);

        f.setPreferredSize(new Dimension(500,500));
        f.add (scroller,BorderLayout.CENTER);
        f.pack();
        f.show();
    }
}
هل كانت مفيدة؟

المحلول

يتم دعم هذا بشكل افتراضي في التأرجح على الرغم من أن التنظيف الرأسي له أولوية على التمرير الأفقي عندما يكون كلا ألبان التمرير مرئية.

أتوقع أن يتم تطوير جديد في التأرجح وليس Awt.

تعديل:

يجب أن تكون قادرًا على استخدام وحدة تحكم عجلة الماوس لتخصيص سرعة التمرير. لم أجربها أبدًا في التمرير الأفقي ، اسمحوا لي أن أعرف ما إذا كان يعمل.

نصائح أخرى

يتم التعامل مع أحداث التنقل على لوحة التتبع الخاصة بـ MacBookPro الخاصة بي خارج الصندوق. لاحظ أن هناك طريقة على JScrollPane لتمكين أحداث العجلات: setWheelScrollingEnabled

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top