Как использовать мою сенсорную панель для горизонтальной прокрутки mousewheel в Java AWT ScrollPane

Как много современных мышей и сенсорных панелей, моя поддержка портативного компьютера вертикальная и горизонтальная прокрутка. Это - захватывающая функция, после того как Вы привыкаете к нему. Я просто хочу, чтобы мои приложения Java поддерживали горизонтальную прокрутку через trackpad/mousewheel, но везде я ищу, кажется, что это не возможно в Java.

Я действительно хочу, чтобы кто-то сказал мне, что я так или иначе делаю его неправильно, этой функцией уже является требуемое поведение: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6440198

Неспособность сделать этой простой вещью является на самом деле недопустимое для приложения, я продолжаю работать. На самом деле для любого приложения я могу предположить! Я инвестировал немного времени в бэкенд Java, таким образом, я действительно хотел бы найти решение для этой на вид простой вещи.

Вопрос - то, что я мог сделать для реализации этого поведения? Необработанные события уровня ОС даже выставляются мне 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();

    }

}

Пример Swing работает и с горизонтальной и с вертикальной прокруткой

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();
    }
}

6
задан blissapp 17 May 2010 в 06:02
поделиться

2 ответа

Это поддерживается по умолчанию в Swing, хотя вертикальная прокрутка имеет приоритет над горизонтальной прокруткой, когда видны обе полосы прокрутки.

Я ожидал, что новые разработки будут сделаны в Swing, а не в AWT.

Изменить:

Вы должны иметь возможность использовать Контроллер колеса мыши для настройки скорости прокрутки. Никогда не пробовал при горизонтальной прокрутке, дайте знать, работает ли.

1
ответ дан 17 December 2019 в 20:29
поделиться

События навигации на трекпаде MacBookPro обрабатываются сразу после установки. Обратите внимание, что на JScrollPane есть метод для включения событий колеса: setWheelScrollingEnabled

1
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: