Javadabbadoo.org - Tu comunidad Java parlante Streams - Swing
Inicio | Cursos infosintesis.net liberados | Java SE | Editor de texto
Editor de texto
Paso 1: Operativa

Creación de la clase EditorMarc

Como vamos a trabajar con la API Swing de Java para realizar este editor, la Clase EditorMarc va a heredar de la Clase javax.swing.JFrame.

El editor de texto lo crearemos en una ventana siguiendo los siguientes pasos:

nos situamos en la ventana Projects y con el botón derecho del ratón seleccionamos el paquete paqstreams. Entonces elegimos New | JFrameForm...

NetBeans 6 - Nuevo JFrame - Projects | New | JFrame Form...

se abre el cuadro de diálogo New JFrame Form. En el campo de texto Class Name: introducimos el nombre de la Clase EditorMarc y finalmente hacemos clic sobre el botón

NetBeans 6 - Nuevo JFrame - New JFrame Form

Para que el Frame (marco, ventana) tenga dimensiones , vamos a modificar el código perteneciente al método main(...) tal y como hicimos en la aplicación del selector de colores. Tenemos que indicar:


Compara tu código con la solución propuesta

Creación de la clase EditorPanel

Todos los entornos de desarrollo RAD (Rapid application development) son de gran ayuda a la hora de crear nuestras aplicaciones gráficas. Pero todos sin excepción caen en el mismo error. Todo el código relacionado con la parte gráfica visual lo escriben en un mismo fichero.

La solución a este inconveniente pasa por crear el editor en un panel, y que este panel sea un JavaBean que lo colocamos en nuestra paleta de componentes y puede ser reutilizado siempre que queramos.

Para crear la Clase EditorPanel

Asociar el JavaBean EditorPanel a la Aplicación EditorMarc

El JavaBean EditorPanel lo vamos a añadir a la paleta de componentes en la pestaña Beans según el Apéndice - Insertar un JavaBean creado por nosotros en la Paleta de componentes.

Ahora vamos a indicar que el marco EditorMarc tiene como Gestor de Organización BorderLayout. Para ello seleccionamos de la ventana Inspector [JFrame] | Set Layout | BorderLayout

NetBeans 6 - Border Layout - JFrame | Set Layout | BorderLayout

Después pasamos el nuevo JavaBean de la paleta al interiror del marco EditorMarc.

A partir de ahora tenemos que tener muy claro que cualquier modificacón realizada sobre el editor se realizará en el JavaBean EditorPanel, y que la Clase EditorMarc actúa como una simple contenedora del editor. De esta forma, y siguiendo el ejemplo planteado con anterioridad, si un cliente dentro de 6 meses nos pide un editor de texto, será tan simple como arrastrarlo de nuestra paleta de componenetes a la Aplición de nuestro cliente.

Este es el código de la Clase EditorMarc

package paqstreams;

public class EditorMarc extends javax.swing.JFrame {
 public EditorMarc() {
  initComponents();
 }

 private void initComponents() {
  editorPanel1 = new paqstreams.EditorPanel();
  setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  getContentPane().add(editorPanel1, java.awt.BorderLayout.CENTER);
  pack();
 }

 
public static void main(String args[]) {
  EditorMarc marco = new EditorMarc();
  marco.setSize(400, 300);
  marco.setTitle("Editor de Texto");
  marco.setVisible(true);
 }

 private paqstreams.EditorPanel editorPanel1;
}

Ampliación de la utilidad UtilEntradaSalida

Para que nuestro editor de texto pueda leer y guardar ficheros de texto, vamos a añadir los métodos cargarFichero(...) y guardarFichero(...) a la Clase UtilEntradaSalida

package paqstreams;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import java.io.FileReader;
import java.io.
FileWriter;
import javax.swing.JTextArea;



public class UtilEntradaSalida {
 public static void copiaFicheroBytes(String fich1, String fich2)
                                      throws FileNotFoundException, IOException {
  File fInput = new File(fich1);
  File fOutput = new File(fich2);

  FileInputStream fileInputStream = new FileInputStream(fInput);

  FileOutputStream fileOutputStream = new FileOutputStream(fOutput);

  int c;
  while ((c = fileInputStream.read()) != -1)
   fileOutputStream.write(c);

  fileInputStream.close();
  fileOutputStream.close();
 }

 public static void
cargarFichero (File fileIn, JTextArea textArea1) throws IOException {
  if (fileIn == null) return;
  
FileReader fileReaderIn = new FileReader(fileIn);
  int iTamaño = (int) fileIn.length();
  char[] mCaracteres = new char[iTamaño];
  fileReaderIn.
read(mCaracteres, 0, iTamaño);
  textArea1.setText(new String(mCaracteres));
  fileReaderIn.
close();
 }


 public static void guardarFichero(File fileOut, JTextArea textArea1) throws IOException {
  if (fileOut == null) return;
  
FileWriter fileWriterOut = new FileWriter(fileOut);
  String strTexto = textArea1.getText();
  fileWriterOut.
write(strTexto);
  fileWriterOut.
close();
 }
}

JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...