Formularios Java con scroll
Juan Pablo Angamarca.
Este va a ser el primero de los pequeños aportes que voy a hacer con respecto a programación en Java, espero que podamos enriquecer este espacio con preguntas y opiniones. No pretendo ser un experto, de hecho no lo soy, y por eso, es bueno que colaboremos todos.
Hace unos días una compañera de segundo ciclo me expuso un problema, al diseñar un formulario, eran visibles todos los componentes dentro del JFrame, pero en tiempo de ejecución era necesario cambiar de tamaño al formulario y al hacerlo, perdían visibilidad algunos componentes, siendo necesario tener siempre el JFrame en su tamaño original para poder ver todo lo que contenía.
Presento aquí una solución muy sencilla, para esto necesitaremos:
1) NetBeans IDE y JDK 1.5 o superior. Por cierto, ya está disponible la versión de NetBeans 5.5.1. Usar un IDE ahorra el tener que pelearse con todo el código Java que antes se escribía por cuenta propia.
2) Conocimientos de Java y NetBeans.
3) Un poco de paciencia.
Asumiendo que tenemos creado un proyecto, creamos un nuevo JFrame. En este caso, mi clase será ScrollableJFrame.java.

Insertamos un objeto JPanel para diseñar sobre él nuestra interfaz de usuario.

En el panel Inspector (Menú Window > Inspector, suele estar ubicado a la izquierda en el IDE) cambiaremos el nombre de variable del recién insertado objeto a PanelInterfazUsuario. Es una buena práctica de programación darles nombres significativos a los componentes, y no dejarlos con el nombre que da el IDE por defecto al insertarlos. En este ejemplo sólo renombraré los componentes que interesan por ahora.

Hacemos clic derecho sobre PanelInterfazUsuario y seleccionamos la opción Design This Container. En la nueva vista insertamos los componentes necesarios para nuestra interfaz. Luego, para volver al JFrame, hacemos doble clic en el componente JFrame en la ficha Inspector.

Insertamos desde la paleta un objeto JScrollPane. Este objeto creará barras de desplazamiento en los bordes del JPanel si no todos sus componentes son visibles con un tamaño de formulario dado. Cambiamos el nombre del JScrollPane a scrollFormulario. Si deseamos podemos cambiarle el tipo de borde en la paleta Properties > Border, donde nos aparecerá una serie de opciones de borde.


Arrastramos PanelInterfazUsuario sobre scrollFormulario, y lo soltamos cuando aparezcan líneas discontinuas sobre el scrollFormulario. Ambos quedarán fusionados y PanelInterfazUsuario tendrá barras de desplazamiento en sus bordes. Ajustamos el tamaño del JFrame, seleccionamos el componente scrollFormulario y ajustamos su tamaño hasta que coincida con los bordes del formulario.



Si queremos cambiar algún detalle de PanelInterfazUsuario, podemos sacarlo del JScrollPane. Para esto arrastramos su icono en la pestaña Inspector hasta encima del icono del JFrame, de esta forma scrollFormulario y PanelInterfazUsuario quedarán separados de nuevo.

A continuación ejecutamos ScrollableJFrame.java. Veremos que podemos hacerlo más grande que su tamaño original, pero si lo hacemos más pequeño, aparecerán las barras para ver lo que falta de formulario.



Esto ha sido algo bastante sencillo, y todo necesita práctica. Hasta una próxima oportunidad, agradeceré sus preguntas y opiniones.







Chevere… gracias por tu trabajo. Saludos.
Que tal,,, oye, como puedo recuperar la informacion que el usuario escriba en un cuadro de texto, estoy desarrollando un programa que genera archivos aleatorios,,, debo crear una interfaz para recoger los datos de entrada. ya logre hacer el formulario, pero que propiedad uso para vaciar el contenido de los cuadros de texto en variables para despues grabarlas en archivos?
thanks
@ricardo, debes usar las propiedades getText() y setText(String t) de objetos ya sean JTextField o JTextArea:
/* texto: variable String para recoger el texto. jtaTexto es un JTextArea.*/
String texto = this.jtaTexto.getText();
RandomAccessFile archivo; // Flujo aleatorio.
try {
// Crear/acceder al archivo "archivo.dat" en modo read/write.
archivo = new RandomAccessFile("archivo.dat", "rw");
archivo.writeUTF(texto); // Escribir el texto en el archivo.
this.jtaTexto.setText(""); // Limpiar el cuadro de texto.
archivo.close(); //Cerrar el archivo.
} catch (IOException ex) { // Capturar posibles excepciones
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "Error al escribir en el archivo",
"Error", JOptionPane.ERROR_MESSAGE);
}
Muy interesante el desarrollo de la clase.
Continua en particular modelando tipos de formulario.
¿Hay algún codigo sobre historia clinica digital modelada en java con formularios apropiados?
Gracias