Как много современных мышей и сенсорных панелей, моя поддержка портативного компьютера вертикальная и горизонтальная прокрутка. Это - захватывающая функция, после того как Вы привыкаете к нему. Я просто хочу, чтобы мои приложения 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();
}
}
Это поддерживается по умолчанию в Swing, хотя вертикальная прокрутка имеет приоритет над горизонтальной прокруткой, когда видны обе полосы прокрутки.
Я ожидал, что новые разработки будут сделаны в Swing, а не в AWT.
Изменить:
Вы должны иметь возможность использовать Контроллер колеса мыши для настройки скорости прокрутки. Никогда не пробовал при горизонтальной прокрутке, дайте знать, работает ли.
События навигации на трекпаде MacBookPro обрабатываются сразу после установки. Обратите внимание, что на JScrollPane
есть метод для включения событий колеса: setWheelScrollingEnabled