Sei sulla pagina 1di 9

PROGRAMACIN

JAVA
PROGRAMACIN MDI
Bloc de Notas MDI
Planteamiento Inicial
Se pretende realizar un programa capaz de abrir ficheros de texto (.txt). Este programa ser
MDI, es decir, ser capaz de abrir varios ficheros, mostrando sus contenidos en distintas
ventanas.

Ventana Principal
La ventana principal del programa constar de un men con las siguientes opciones:
Archivo
Abrir
Cerrar
Cerrar Todos
Salir
Ventana
Cascada
Mosaico Horizontal
Mosaico Vertical

En el centro de la ventana (se recomienda un Layout del tipo BorderLayout) se colocar un


panel del tipo JDesktopPane que ser el encargado de contener las ventanas internas. Puede
llamar a este panel panelInterno.
Aspecto de la ventana principal:

panelInterno
(JDesktopPane)

Ventana Interna
Debe aadir a su proyecto una clase JInternalFrame para disear las ventanas internas.
Una ventana interna constar nicamente de un objeto JTextPane que ocupar toda la ventana.
Los objetos JTextPane son similares a los cuadros de texto (JTextField) con la diferencia de
que pueden contener grandes cantidades de texto en varias lneas. Llame al objeto JTextPane
con el nombre txtTexto.

txtTexto
(JTextPane)

Estas ventanas internas contendrn el texto del fichero que se abra. Para facilitar la tarea de
abrir un fichero y colocar su texto en la ventana interna debe aadir el siguiente mtodo a la
clase ventana interna:
public void ponerTexto(String caminofichero) {
try {
File fi = new File(caminofichero);
FileReader lectura = new FileReader(fi);
BufferedReader entrada = new BufferedReader(lectura);
String linea;
String texto="";
linea = entrada.readLine();
while(linea!=null) {
texto = texto+linea+"\n";
linea = entrada.readLine();
}
entrada.close();
lectura.close();
txtTexto.setText(texto);
} catch(Exception e) {
JOptionPane.showMessageDialog(null,"Error al leer fichero.");
}
}

Este mtodo recibe el camino de un fichero, y coloca dentro del JTextPane (el panel de texto) el
texto contenido en el fichero. Aunque no es necesario entender el cdigo de este mtodo, en la
parte final del enunciado se da una explicacin de su funcionamiento.

Opciones principales del programa


Se comenta a continuacin la forma en que deben funcionar las distintas opciones del
programa:
Opcin Archivo Abrir
Esta opcin servir para abrir un fichero .txt y mostrar su contenido en una ventana interna.
Para ello, tendr que mostrar un JFileChooser para abrir un fichero.
Si el usuario selecciona un fichero, entonces tendr que crear una ventana interna llamada por
ejemplo vi, y mostrarla en el panel Interno.
Finalmente, usando el mtodo ponerTexto de la ventana interna vi deber mostrar el contenido
del fichero seleccionado en el JFileChooser.
vi.ponerTexto(caminoficheroseleccionado)
Al abrir un fichero de texto en una ventana, deber aparecer el camino del fichero en la barra
de ttulo de la ventana interna.
Opcin Archivo Cerrar
La opcin Cerrar cerrar la ventana interna que est activa (si es que hay alguna)
Opcin Archivo Cerrar Todas
Esta opcin cerrar todas las ventanas internas abiertas en el panel interno.
Opcin Archivo Salir
Permitir salir del programa.
Opcin Ventana Cascada
Esta opcin colocar todas las ventanas internas que haya abiertas en cascada. Esto es, una
encima de otra, mostrando el ttulo de cada una.

Opcin Ventana Mosaico Horizontal


Esta opcin har visible todas las ventanas mostrndolas en horizontal, ocupando todo el panel
interno.
Para ello, tendrs que obtener el tamao vertical del panel interno, y dividirlo por el nmero de
ventanas abiertas en l. Esa cantidad ser la altura de cada ventana.
El ancho de cada ventana ser el ancho del panel interno.
Una vez calculado el ancho y alto de cada ventana debes colocar cada ventana una debajo de
otra.

Opcin Ventana Mosaico Vertical


Esta opcin har visible todas las ventanas mostrndolas en vertical, ocupando todo el panel
interno.
Para ello, tendrs que obtener el tamao horizontal del panel interno, y dividirlo por el nmero
de ventanas internas abiertas en l. Esa cantidad ser el ancho de cada ventana.
Al alto de cada ventana ser el alto del panel interno.
Una vez calculado el ancho y alto de cada ventana debes colocar cada ventana una al lado de
otra.

EXPLICACIN MTODO ponerTexto


Para realizar este ejercicio es necesario aadir a la clase de la ventana interna el siguiente
mtodo. No es necesario entender el cdigo de este procedimiento para hacer el ejercicio, pero
en cualquier caso, aqu hay una explicacin de este:
public void ponerTexto(String caminofichero) {
try {
File fi = new File(caminofichero);
FileReader lectura = new FileReader(fi);
BufferedReader entrada = new BufferedReader(lectura);
String linea;
String texto="";
linea = entrada.readLine();
while(linea!=null) {
texto = texto+linea+"\n";
linea = entrada.readLine();
}
entrada.close();
lectura.close();
txtTexto.setText(texto);
} catch(Exception e) {
JOptionPane.showMessageDialog(null,"Error al leer fichero.");
}
}

Este mtodo recibe un camino de fichero de texto y muestra dentro de un JTextPane el texto
que contiene dicho fichero.
La forma de acceder a un fichero para extraer su contenido es a travs de canales. Los
canales son objetos que se enganchan al fichero uno detrs de otro. Cada canal ofrece una
serie de posibilidades al programador.
Para los ficheros de texto, la forma de acceder a ellos es la siguiente:
-

Camino Fichero
(String)

Se crea un objeto File a partir del camino del fichero (El camino del fichero es un
String)
Se engancha al objeto File un objeto del tipo FileReader. (Los objetos FileReader son
canales de lectura, que permiten extraer informacin del fichero)
Se engancha al canal FileReader un objeto BufferedReader. (Los objetos
BufferedReader dan facilidad al programador para extraer el texto del fichero)
Finalmente, a travs del mtodo readLine del objeto BufferedReader se pueden extraer
una a una las lneas de texto del fichero.
Una vez finalizado el trabajo con el fichero se cierra el canal FileReader y el canal
BufferedReader.
Objeto Fichero
(File)

Canal de Acceso al
Fichero
(FileReader)

Canal de Acceso al
Fichero
(BufferedReader)

La creacin de un objeto File a partir del camino del fichero se hace con la siguiente
instruccin:
File fi = new File(caminofichero);

La creacin de un canal FileReader y la conexin con el fichero anterior se hace a travs de la


siguiente instruccin:
FileReader lectura = new FileReader(fi);

La creacin de un canal BufferedReader y la conexin con el canal FileReader anterior se hace


a travs de la siguiente instruccin:
BufferedReader entrada = new BufferedReader(lectura);

Una vez hecho esto, tenemos un objeto llamado entrada del tipo BufferedReader que posee un
mtodo llamado readLine que permite leer una lnea de texto del fichero. A travs de este
mtodo vamos leyendo lneas de texto del fichero.
Hay que tener en cuenta que si al usar readLine obtenemos el valor null, es que ya no hay ms
texto en el fichero.
Todo esto se aprovecha para crear una cadena larga con el contenido del fichero:
String linea;
String texto="";
linea = entrada.readLine();
while(linea!=null) {
texto = texto+linea+"\n";
linea = entrada.readLine();
}

El cdigo anterior crea una variable texto que contiene el texto completo del fichero. Este
cdigo extrae una a una las lneas de texto del fichero y las va concatenando en la variable
texto.
Como hemos terminado con la manipulacin del fichero, es bueno cerrar los canales de
comunicacin con el fichero (el canal FileReader y el canal BufferedReader creados):
entrada.close();
lectura.close();

Y finalmente metemos el texto extrado en el panel de texto de la ventana, el cual se llama


txtTexto:
txtTexto.setText(texto);

Todo esto debe estar dentro de un try ... catch ya que es un cdigo susceptible de tener errores
de ejecucin (es decir, de lanzar excepciones)

Potrebbero piacerti anche