Ejemplos java y C/linux

Tutoriales

Enlaces

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Para reconocer la autoría debes poner el enlace http://www.chuidiang.com

Aprovechar el Cortar, Copiar y Pegar de un JTextArea

Siguiendo con el editor sencillo de texto en java, vamos a poner en el menú las acciones de copiar, pegar y cortar. El JTextArea ya tiene dentro implementadas varias acciones típicas de un editor de textos y en concreto estas. Se las invoca con el típico Ctrl-C, Ctrl-V y Ctrl-X. Vamos a aprovecharlas para añadirlas al menú de nuestro editor.

Obetener las acciones del JTextArea

Podemos obtener las acciones que tiene implementadas el JTextArea llamando a su método getActionMap(). Esto nos devuelve un HashMap con todas las acciones de que dipone el JTextArea.

Hashmap acciones = areaTexto.getActionMap();

Cada acción se identifica por un nombre. Sabiendo el nombre, se puede obtener la acción de este HashMap con el método get()

Action accionCopiar = acciones.get ("Nombre de accion copiar");

Los nombres de esta acciones podemos encontrarlos en la clase DefaultEditorKit. En concreto, nos interesan DefaultEditorKit.cutAction, DefaultEditorKit.pasteAction y DefaultEditorKit.copyAction, que son los nombres de nuestras acciones. De la siguiente forma obtenemos las tres acciones

Action accionCopiar = acciones.get(DefaultEditorKit.copyAction);
Action accionPegar = acciones.get(DefaultEditorKit.pasteAction);
Action accionCortar = acciones.get(DefaultEditorKit.cutAction);

Construir el menú con estas acciones

Ya tenemos las tres acciones del JTextField. Sólo tienen una pega, y es que su título visible está en inglés y es algo largo. Son títulos estilo "copy to clipboard", "paste from clipboard", etc. Vamos a darles un nombre en cristiano y le pondremos una tecla aceleradora para el menú. También podríamos añadir si lo deseamos un icono para cada una de ellas.

accionCopiar.putValue(Action.NAME, "Copiar");
accionCopiar.putValue(
   Action.ACCELERATOR_KEY,
   KeyStroke.getAWTKeyStroke('C', Event.CTRL_MASK));

accionCortar.putValue(Action.NAME, "Cortar");
accionCortar.putValue(
   Action.ACCELERATOR_KEY,
   KeyStroke.getAWTKeyStroke('X', Event.CTRL_MASK));

accionPegar.putValue(Action.NAME, "Pegar");
accionPegar.putValue(
   Action.ACCELERATOR_KEY,
   KeyStroke.getAWTKeyStroke('accionCopiar.putValue(Action.NAME, "Copiar");
accionCopiar.putValue(
   Action.ACCELERATOR_KEY,
   KeyStroke.getAWTKeyStroke('V', Event.CTRL_MASK));

// Para los iconos. En los fuentes completos de editor-1.0-sources.jar no viene.
accionCopiar.putValue (Action.SMALL_ICON, new ImageIcon("c:/path_iconos/copiar.gif"));
accionCortar.putValue (Action.SMALL_ICON, new ImageIcon("c:/path_iconos/cortar.gif"));
accionPegar.putValue (Action.SMALL_ICON, new ImageIcon("c:/path_iconos/pegar.gif"));

Listo, ya sólo queda añadirlo todo, estas tres y la de buscar que nos hicimosa nuestro JMenu de "Editar", junto con un separador JSeparator para que quede más bonito.

// Se crea el JMenu y se le añaden los JMenuItem
JMenu menuEditar = new JMenu("Editar");
menuEditar.add(accionBuscar);
menuEditar.add(new JSeparator());
menuEditar.add(accionCortar);
menuEditar.add(accionCopiar);
menuEditar.add(accionPegar);

// Se añade el menú "editar" a la barra de menú.
barraMenu.add(menuEditar);

Listo, con esto tienes un pequeño editor sencillo con un menú "Editar" como el de la figura

Foto del editor de textos

Descarga de fuentes y código compilado

Tienes los fuentes completos para bajarte en editor-1.0-sources.jar. También tienes el jar compilado en editor-1.0.jar. Si tienes windows bien configurado para los jar, te bastará con hacer doble click sobre él para ejecutarlo. Si no lo tienes bien configurado, es posible que se te abra el winzip o winrar o símplemente windows no sepa qué hacer con é.. Si es así, desde una ventana de ms-dos (o bash, shell de linux) vete al directorio donde te lo hayas bajado y escribe

java -jar editor-1.0.jar

Vuelve a los tutoriales para novatos si quieres mirar alguna cosilla más de java.

Estadísticas y comentarios

Numero de visitas desde el 4 Feb 2007: