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.
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);
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
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.