Cortar, copiar y pegar texto en Java es tarea sencilla, ello gracias a que:
- Los componentes swing de Java ya tienen implementados las clásicas combinaciones Ctrl+x, Ctrl+c, Ctrl+v para cortar, copiar y pegar.
- El paquete javax.swing.text.DefaultEditorKit tiene implementadas las acciones cortar, copiar y pegar. Estas acciones se pueden agregar a un JButton o un JMenuItem.
Para agregar las acciones cortar, copiar y pegar a un JButton o un JMenuItem, hay que instanciar estos objetos, pasando al constructor de los mismos, el objeto Action devuelto por los métodos CutAction, CopyAction y PasteAction de la clase DefaultEditorKit.
buttonCopiar = new JButton( new DefaultEditorKit.CopyAction() );
buttonPegar = new JButton( new DefaultEditorKit.PasteAction() );
Cabe aclarar, que estas acciones funcionarán sobre el componente de texto que tenga el foco en el momento de presionar el botón.
Para finalizar, un ejemplito completo:
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.text.DefaultEditorKit;
public class Test_CopyCutPaste extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextArea textArea = null;
private JButton buttonCopiar = null;
private JButton buttonCortar = null;
private JButton buttonPegar = null;
private JTextArea getTextArea() {
if (textArea == null) {
textArea = new JTextArea();
textArea.setBounds(new Rectangle(9, 49, 217, 98));
}
return textArea;
}
private JButton getButtonCopiar() {
if (buttonCopiar == null) {
buttonCopiar = new JButton( new DefaultEditorKit.CopyAction() );
buttonCopiar.setBounds(new Rectangle(87, 16, 63, 23));
buttonCopiar.setText("Copiar");
}
return buttonCopiar;
}
private JButton getButtonCortar() {
if (buttonCortar == null) {
buttonCortar = new JButton( new DefaultEditorKit.CutAction() );
buttonCortar.setBounds(new Rectangle(12, 16, 63, 23));
buttonCortar.setText("Cortar");
}
return buttonCortar;
}
private JButton getButtonPegar() {
if (buttonPegar == null) {
buttonPegar = new JButton( new DefaultEditorKit.PasteAction() );
buttonPegar.setBounds(new Rectangle(162, 16, 63, 23));
buttonPegar.setText("Pegar");
}
return buttonPegar;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Test_CopyCutPaste thisClass = new Test_CopyCutPaste();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public Test_CopyCutPaste() {
super();
initialize();
}
private void initialize() {
this.setSize(246, 200);
this.setName("frameBase");
this.setContentPane(getJContentPane());
this.setTitle("Test Cut/Copy/Paste");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getTextArea(), null);
jContentPane.add(getButtonCopiar(), null);
jContentPane.add(getButtonCortar(), null);
jContentPane.add(getButtonPegar(), null);
}
return jContentPane;
}
}
Vía: Chuidilang




Guillermina
diciembre 3, 2008
Hola estoy haciendo un bloc de nota pero no se como configurar los botones cortar, pegar , copiar e imprimir.
Pero el proyecto lo estoy haciendo en Netbeans y ya tengo los botones solo me hace falta configurarlos.
Si pueden ayudarme, le agradeceria mucho
Marvin
marzo 16, 2009
Muy bueno, me ayudo bastante. que bueno que java simplifica muchas cosas.
Elias Leyton
abril 1, 2009
Ahi varias lineas que no entiedo…
podrias explicar el manejo de eventos gracias. yo tambien estoy haciendo un tipo bloc de notas_
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.text.DefaultEditorKit; //copy + paste
public class EditorSimple extends JFrame{
private JButton botonCopiar;
private JButton botonCortar;
private JButton botonPegar;
private JLabel barraEstado;
private JTextArea areaTexto;
//elementos de la barra menu
private JMenuBar barra;
private JMenu archivo;
private JMenuItem abrir;
private JMenuItem grabar;
public EditorSimple(){
super(“Super editor TAP”);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new CerrarListener());
inicializarMenu();
inicializarComponentes();
}
private void inicializarMenu(){
barra= new JMenuBar();
archivo =new JMenu(“Archivo”);
barra.add(archivo);
abrir= new JMenuItem(“Abrir”);
abrir.addActionListener(new AbrirListener());//agregamos el listener
archivo.add(abrir);
grabar= new JMenuItem(“Grabar”);
archivo.add(grabar);
this.setJMenuBar(barra);
}
private void inicializarComponentes(){
Container contentPane= this.getContentPane();
contentPane.setLayout(new BorderLayout());
barraEstado =new JLabel(“Bienvenido – Listo”);
contentPane.add(barraEstado);
areaTexto = new JTextArea();
JScrollPane scroller = new JScrollPane(areaTexto);
contentPane.add(scroller, BorderLayout.CENTER);
JPanel panelNorte =new JPanel();
panelNorte.setLayout (new FlowLayout(FlowLayout.LEFT));
botonCopiar = new JButton(new DefaultEditorKit.CopyAction());
botonCopiar.setText(“Copiar”);
panelNorte.add(botonCopiar);
botonCortar = new JButton(new DefaultEditorKit.CutAction());
botonCortar.setText(“Cortar”);
panelNorte.add(botonCortar);
botonPegar = new JButton(new DefaultEditorKit.PasteAction());
botonPegar.setText(“Pegar”);
panelNorte.add(botonPegar);
contentPane.add(panelNorte, BorderLayout.NORTH);
this.pack();
this.setSize(350,390);
}
class AbrirListener implements ActionListener{
public void actionPerformed(ActionEvent ev){
abrirClick();
}
}
private void abrirClick(){
JFileChooser chooser= new JFileChooser();
int respuesta = chooser.showOpenDialog(this);
if(respuesta == JFileChooser.APPROVE_OPTION){
File archivo = chooser.getSelectedFile();
abrirArchivo(archivo);
}
}
private void abrirArchivo(File archivo){
//este metodo lee un archivo y lo deja en el area de texto para que se le
//pueda editar
try{
BufferedReader br= new BufferedReader(new FileReader(archivo));
String linea =br.readLine();
while (linea!=null){
areaTexto.append(linea + “\n”);
linea= br.readLine();
}
br.close();
}catch (IOException ex){
System.err.println(“problemas al leer el archivo”+ ex);
}
}
//eventos de ventana
//hoy vamos por el mas importante de todos. CERRAR
//asi como existen action listener para los botones, existe Windows Listener
//para las ventanas. el problema es que windndows listener es una interfaz mas
//compleja, que inclute varios metodos. para hacer la vida mas facil, existe
//una clase, windows adapter, de la que podemos heredar pafra modificar el comportamiento
//de la ventana solo en lo que nos combiene
class CerrarListener extends WindowAdapter{
public void windowsClosing(WindowEvent ev){
cerrandoVentana();
}
}
private void cerrandoVentana(){
int opcion =JOptionPane.showConfirmDialog(this, “¿esta seguro de salir?”,
“confirma”, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(opcion==JOptionPane.YES_OPTION){
this.dispose();
System.exit(0);
}
}
public static void main (String []arx){
JFrame ventana = new EditorSimple();
ventana.setVisible(true);
}
}
luis alberto romero calderon
marzo 22, 2011
Milllllllllll Gracias Hermano Me has sacado de un gran apuro con esto!!!!!
marvin
junio 8, 2011
muy bueno, gracias por este tutorial
Sergio
noviembre 27, 2011
porque me marca un erro en la linea 9 con class?