JSrcrollPane
Buen día, tengo un problema con las barras de desplazamiento de JScrollPane, por lo que tengo entendido aparecen por default, o se especifica en el constructor o con el método .setVerticalScrollBarPolicy() o .setHORIZONTALScrollBarPolicy. lo eh hecho de ambas formas pero no aparece barra de desplazamiento alguna. El problema es que tengo una clase "Dibujo" que hereda de JComponent la cual incluyo en el JScrollPane con el método .setViewportView(new Dibujo()).
Espero mi explicación sea lo mas entendible posible... Muchas gracias.
.
- Inicie sesión o regístrese para enviar comentarios
Re: barras de desplazamiento
Por defecto, las barras de desplazamiento sólo se muestran cuando es necesario. Es decir, la política es
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
yScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
.Si contenedor puede mostrar el componente completo, entonces las barras de desplazamiento no se muestran. Ejemplo:
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
ImageIcon icon = new ImageIcon(new URL("http://www.javamexico.org/files/zen_logo.png"));
JLabel label = new JLabel(icon);
JScrollPane scrollPane = new JScrollPane(label);
frame.add(scrollPane);
frame.setVisible(true);
Pero si el tamaño del contenedor es más pequeño que el del componente, entonces las barras de desplazamiento sí se muestran, según se requieran. Ejemplo:
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(100, 100);
ImageIcon icon = new ImageIcon(new URL("http://www.javamexico.org/files/zen_logo.png"));
JLabel label = new JLabel(icon);
JScrollPane scrollPane = new JScrollPane(label);
frame.add(scrollPane);
frame.setVisible(true);
Si lo que quieres es siempre mostrar las barras de desplazamiento, necesitas cambiar la política, es decir,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
yScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
. Ejemplo:frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
ImageIcon icon = new ImageIcon(new URL("http://www.javamexico.org/files/zen_logo.png"));
JLabel label = new JLabel(icon);
JScrollPane scrollPane = new JScrollPane(label);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
frame.add(scrollPane);
frame.setVisible(true);
Por último, en lugar de utilizar los setters, se puede especificar la política en el constructor. Ejemplo:
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
¡Por si sirve de algo!
~~~