Autor Tema: Java ejemplo uso de objetos de tipo Scroll Pane no se muestra scrollbar vertical  (Leído 8190 veces)

mzamora60

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Buen dia. Por favor su valioso apoyo ya que tengo una aplicación que trabaja bien salvo al momento de querer utilizar los objetos de tipo Scroll Pane. La situación es la siguiente. Estoy trabajando en el editor grafico de netbeans y por necesidad de mi aplicación tengo que agregar un Scroll Pane para poder desplazarme a lo largo y ancho de una imagen una vez que ha sido llamada e insertada dentro del JLabel mi problema radica en que solo habílita la barra de desplazamiento horizontal (eje x ), más no puedo hacer que se habilite la barra vertical (eje y). realmente no lo estoy haciendo a base de código sino que solo arrastre el objeto Scroll Pane del pallet (editor grafico). Quien puede darme algún tip de porque no se habilita la barra de desplazamiento vertical pero si la horizontal ?.

Gracias por lo que se pueda hacer una vez más.

 :)
« Última modificación: 09 de Enero 2016, 13:03 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola la recomendación general es aprender a usar swing para generar los elementos gráficos a través de código. El uso de editores gráficos suele decirse que "ensucia" el código y a la la larga lo vuelve inmanejable e inentendible.

En los JScrollPane se establece la aparición de los scrolls verticales u horizantales usando estos métodos (aquí pongo el ejemplo del vertical):

public void setVerticalScrollBarPolicy(int policy)

El método determina cuándo las barras de scroll se mostrarán en el JScrollPane. Los valores permitidos para la barra vertical son:

    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
    ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER
    ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS

Donde as_needed indica que se mostrarán "cuando sea necesario", never que no se mostrarán nunca y always que se mostrarán siempre.

Si quieres que siempre aparezca la barra vertical tendrías que buscar esta propiedad y establecerla a always. Mediante código sería algo así como objeto.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS)

Nota: para usar esto tienes que escribir import javax.swing.ScrollPaneConstants;

Este es un ejemplo de código con JScrollPane aplicando esto:

Código: [Seleccionar]
import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

public class ScrollDemo extends JFrame {

  JScrollPane scrollpane;

  public ScrollDemo() {
    super("JScrollPane Demonstration");
    setSize(300, 200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    init();
    setVisible(true);
  }

  public void init() {
    JRadioButton form[][] = new JRadioButton[12][5];
    String counts[] = { "", "0-1", "2-5", "6-10", "11-100", "101+" };
    String categories[] = { "Household", "Office", "Extended Family",
        "Company (US)", "Company (World)", "Team", "Will",
        "Birthday Card List", "High School", "Country", "Continent",
        "Planet" };
    JPanel p = new JPanel();
    p.setSize(600, 400);
    p.setLayout(new GridLayout(13, 6, 10, 0));
    for (int row = 0; row < 13; row++) {
      ButtonGroup bg = new ButtonGroup();
      for (int col = 0; col < 6; col++) {
        if (row == 0) {
          p.add(new JLabel(counts[col]));
        } else {
          if (col == 0) {
            p.add(new JLabel(categories[row - 1]));
          } else {
            form[row - 1][col - 1] = new JRadioButton();
            bg.add(form[row - 1][col - 1]);
            p.add(form[row - 1][col - 1]);
          }
        }
      }
    }
    scrollpane = new JScrollPane(p);
    scrollpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    getContentPane().add(scrollpane, BorderLayout.CENTER);
  }

  public static void main(String args[]) {
    new ScrollDemo();
  }
}

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".