Cortar, copiar y pegar texto en Java es tarea sencilla, ello gracias a que:
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:
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
3 Respuestas para "Botones cortar-copiar-pegar en Java"
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
Muy bueno, me ayudo bastante. que bueno que java simplifica muchas cosas.
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);
}
}
Comentarios: