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.

buttonCortar = new JButton( new DefaultEditorKit.CutAction() );
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.SwingUtilities;
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