Как и многие современные мыши и трекпады, мой ноутбук поддерживает вертикальную и горизонтальную прокрутку. Это привыкание, когда вы привыкнете к нему. Я просто хочу, чтобы мои Java-приложения поддерживали горизонтальную прокрутку с помощью трекпада / колесика мыши, но везде, где я ищу, кажется, что это невозможно в 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();
}
}