Al igual que muchos mouse y trackpads modernos, mi computadora portátil admite el desplazamiento vertical y horizontal. Es una característica adictiva una vez que te acostumbras. Simplemente quiero que mis aplicaciones de Java admitan el desplazamiento horizontal a través del trackpad/mousewheel, pero en todas partes que busco parece que esto no es posible en Java. comportamientoCómo usar mi trackpad para desplazamiento horizontal de la rueda del mouse en un ScrollPane de Java AWT
Realmente quiero que alguien me diga que estoy haciendo mal de alguna manera, esta función ya está solicitada: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6440198
La imposibilidad de hacer tal cosa sencilla es en realidad un factor decisivo para la aplicación que estoy trabajando en. De hecho, ¡para cualquier aplicación que pueda imaginar! He invertido un poco de tiempo en el back-end de Java, así que realmente me gustaría encontrar una solución para esta cosa aparentemente simple.
Pregunta es qué podría hacer para implementar este comportamiento? ¿Están expuestos los eventos de nivel de sistema operativo sin procesar a mí por Java? ¿Tendría que escribir esto desde cero?
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();
}
}
ejemplo oscilación trabaja con tanto horizontal como vertical de desplazamiento
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();
}
}
Gracias, Swing funciona, aunque más lentamente que AWT, pero esa podría ser la configuración predeterminada de la rueda. Realmente quería usar AWT para los controles del sistema operativo, pero ahora cambiaré a swing, de todos modos la mayor parte de mi IU será anulada. – blissapp
En relación con el comentario sobre el desplazamiento lento, consulte mi edición anterior. – camickr
Gracias por la actualización. Intenté esa clase de Controlador de rueda del mouse, pero hizo que el desplazamiento fuera lento y espasmódico en mi hardware. Mi solución final fue utilizar el método setUnitIncrement() en ScrollBars, agregué los detalles al código anterior. – blissapp