Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con un copiar/pegar/cortar

Estas en el tema de Ayuda con un copiar/pegar/cortar en el foro de Java en Foros del Web. Hola! Estoy aprendiendo algo de java y he logrado lo basico... Un pequeño editor de texto. Mi problema esta al monento de asignarle a los ...
  #1 (permalink)  
Antiguo 08/04/2010, 17:53
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Ayuda con un copiar/pegar/cortar

Hola!

Estoy aprendiendo algo de java y he logrado lo basico... Un pequeño editor de texto.
Mi problema esta al monento de asignarle a los botones respectivos, la tarea de copiar, pegar y cortar.

Esto es lo que llevo:

Código:
/*
En esta ventana vamos a ver como se agrega una barra de menu a la aplicaccion
 * Para esto, necesitamos tres clases diferentes
 * JMenuBar: La barra de menu
 * JMenu: Un menu especifico dentro de la barra como p.ej. archivo
 * JMenuItem un elemento dentro del menu. que puede ser selecionado como
 * por ejemplo: copiar
 */

package menues;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

/**
 *
 * @author cetecom
 */
public class VentanaMenu extends JFrame{
    //Elementos dentro del contentPane
    private JTextArea zonaEdicion;

    //Elementos del Menu
    private JMenuBar barra;
    private JMenu archivo;
    private JMenu edicion;
    private JMenu ayuda;
    private JMenuItem abrir;
    private JMenuItem guardar;
    private JMenuItem salir;
    private JMenuItem cortar;
    private JMenuItem copiar;
    private JMenuItem pegar;

    public VentanaMenu(){
        super("Ventana Con Menu");
        this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        this.addWindowListener(new EquisListener());
        
        inicializarComponentes();
        inicializarBarraMenu();
        this.pack();
        this.setVisible(true);
    }

    private void inicializarComponentes(){
        //vamos a hacer algo muy simple aqui...
        //Una ventana tipo editor de texto
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout());
        zonaEdicion = new JTextArea (20,50);
        JScrollPane scroller = new JScrollPane(zonaEdicion);
        contentPane.add(scroller, BorderLayout.CENTER);
    }

    private void inicializarBarraMenu(){
        //Vamos a crear una barra de menu...Veremos que es muy facil
        //Primero, creamos la barra de menu...
        this.barra = new JMenuBar();
        this.setJMenuBar(barra);

        //luego creamos los menu especificos... que agregaremos a la barra
        this.archivo = new JMenu("Archivo");
        this.barra.add(this.archivo);
        this.edicion = new JMenu("Edicion");
        this.barra.add(this.edicion);
        this.ayuda = new JMenu("Ayuda");
        this.barra.add(ayuda);

        //armamos el menu Archivo
        this.abrir = new JMenuItem("Abrir");
        this.abrir.addActionListener (new ItemAbrirListener());
        this.archivo.add(this.abrir);
        this.guardar = new JMenuItem("Guardar");
        this.guardar.addActionListener (new ItemGuardarListener());
        this.archivo.add(this.guardar);
        this.archivo.addSeparator(); //Separador
        this.salir = new JMenuItem("Salir");
        this.salir.addActionListener(new ItemSalirListener());
        this.archivo.add(this.salir);

        //Menu Edicion
        this.copiar = new JMenuItem("Copiar");
        this.edicion.add(this.copiar);
        this.pegar = new JMenuItem("Pegar");
        this.edicion.add(this.pegar);
        this.cortar = new JMenuItem("Cortar");
        this.edicion.add(this.cortar);

    }
    //Vamos a hacer que funcione el item salir...
    //para todo efecto practico, un JMenuItem es igual que un boton...
    //asi que vamos a necesitar un actionlistener

    class ItemSalirListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            salirConConfirmacion();
        }
    }

    class ItemAbrirListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            leer();
        }
    }

    class ItemGuardarListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            escribir();
        }
    }

    private void salirConConfirmacion(){
        //vamos a programar un metodo para salir, pero antes de
        //hacerlo pregunte si estamos seguros

        int opcion =
                JOptionPane.showConfirmDialog(this,
                "Esta Seguro? \n Podria perder todo su Trabajo",
                "Conforma", JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE);
        //si la opcion fue si, entonces terminamos
        if(opcion == JOptionPane.YES_NO_OPTION){
            System.exit(0);
        }
    }

    //Problema... el programa tiene un comportamiento NO coherente,
    //si salimos usando el item menu, hay una pregunta, pero si lo
    //hacemos clickeando en la equis de la ventana no pregunta nada
    //y termina la aplicacion...
    //Tenemos que capturar el eventi asociado al click en la ventana
    //para ello tendriamos que implementar la interfaz
    //WindowListener. La forma mas facil de gaxerki es crear una nueva clase
    //que herede de windowAdapter, que a su ves implementa WindowListener

    class EquisListener extends WindowAdapter{
        public void windowClosing(WindowEvent e){
            salirConConfirmacion();
        }
    }

    private void leer(){
        try {

            //establecemos la conexion con el archivo....
            //notece que requerimos de 3 objetos.
            File archivo = new File("c:\\enEdicionTAP.txt");
            FileReader canal = new FileReader(archivo);
            BufferedReader lector = new BufferedReader (canal);

            //leer la primera linea
            String linea = lector.readLine();
            //mientras no se nos termine el archivo
            while (linea!=null){
                //imprimir por pantalla
                zonaEdicion.append(linea+"\n");
                //leemos la siguiente linea
                linea = lector.readLine();
            }
            //finalemente, cerramos la conexion al archivo
            lector.close();

        }
        catch(FileNotFoundException ex){
            System.err.println("No se encontro el archivo");
        }
        catch(IOException ex){
            System.err.println("Hubo una falla al leer el archivo");
            //imprimimos la excepcion para ver cual fue la falla
            ex.printStackTrace();
        }
    }

    public void escribir(){
        try{
            File archivo = new File("c:\\enEdicionTAP.txt");
            FileWriter canal = new FileWriter(archivo);
            BufferedWriter buffer = new BufferedWriter(canal);
            PrintWriter escritor = new PrintWriter(buffer);
            //imprimimos...
            escritor.print(zonaEdicion.getText());
            escritor.close();
            //Damos un mensaje de fin por pantalla
            System.out.println("Listo!");

        }
        catch (IOException ex){
            System.err.println("Se produjo una falla al "+
                                "escribir el archivo");
            ex.printStackTrace();
        }
    }
}
He buscado por varias partes, pero como cada codigo es diferente... me confundo y no se por donde empezar...

Agradeceria una ayudita o consejo.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.