Tengo un JFrame en el cual tiene contenido un JPanel(BoxLayout - orden vertical), en ese JPanel tengo 30 JLabels que se ordenan hacia abajo.
Esta seria la ventana:
ventana3 = new JFrame();
ventana3.setResizable(false);
ventana3.setLocation(200,200);
ventana3.setSize(400,400);
panel1 = new JPanel();
panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
//Con este ciclo agrego 30 Labels al panel.
int contador = 0;
while(contador < 30){
JLabel label = new JLabel("Label");
panel1.add(label);
contador ++;
}
ventana3.add(panel1);
ventana3.setVisible(true);
Lo que quiero lograr es poner una barra de desplazamiento(JScrollPane) vertical al JPanel, para poder ver todos los JLabels contenidos en el JPanel.
Después de investigar bastante e intentar, he dado en el blanco.
Por si alguien le sirve acá lo explico un poco:
Resulta que JScrollPane sirve como un contenedor.
Crean un Jpanel.
Creo un objeto del tipo JScrollPane y le paso como parámetro, el panel(JPanel) que contendrá los Scroll.
Una vez que tengamos creado eso, agregamos el JScrollPane, NO el panel.
Sirve para deslizarse verticalmente y horizontal ;).
ventana3 = new JFrame();
ventana3.setResizable(false);
ventana3.setLocation(200,200);
ventana3.setSize(400,400);
JPanel panel1 = new JPanel();
panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
//Con este ciclo agrego 30 Labels al panel.
int contador = 0;
while(contador < 30){
JLabel label = new JLabel("Label");
panel1.add(label);
contador ++;
}
JSrollPane scrollpane = new JScrollPane(panel1);
ventana3.add(scrollpane);
ventana3.setVisible(true);
Pues así fue como me ha funcionado a mi, corríjanme si me equivoco.
Si algo no entienden, díganmelo en los comentario y con gusto les explico :)