Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ~ Yoya ~ en 7 Marzo 2011, 21:28 pm



Título: [NetBeans] Problema usando la librería DefaultEditorKit
Publicado por: ~ Yoya ~ en 7 Marzo 2011, 21:28 pm
Buenas, soy algo nuevo en java xD. Estoy intentando hacer algo estilo copy, cut y paste, utilizando JMenuItem. El problema es que no eh encontrado la forma de hacerlo, he visto unos ejemplos pero en este caso no me funcionaria.

Aquí el código mas importante:
Código
  1. import javax.swing.text.DefaultEditorKit;
  2.  
  3. public class EjGui extends javax.swing.JFrame {
  4.  
  5. private void initComponents() {
  6.        jMenuItem4 = new javax.swing.JMenuItem();
  7.  
  8.        jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
  9.        jMenuItem4.setText("Copiar");
  10.        jMenuItem4.addMouseListener(new java.awt.event.MouseAdapter() {
  11.            public void mouseClicked(java.awt.event.MouseEvent evt) {
  12.                jMenuItem4MouseClicked(evt);
  13.            }
  14.        });
  15.        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
  16.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  17.                copiar(evt);
  18.            }
  19.        });
  20.  
  21.    private void copiar(java.awt.event.ActionEvent evt) {                        
  22.        // TODO add your handling code here:
  23.  
  24.  
  25.    }                      
  26.  
  27.    private void jMenuItem4MouseClicked(java.awt.event.MouseEvent evt) {                                        
  28.        // TODO add your handling code here:
  29.    }                                      
  30.  
  31.    private javax.swing.JMenuItem jMenuItem4;

Intente hacer un:
Código
  1. jMenuItem4.setAction(new DefaultEditorKit.CopyAction());
Dentro del método copiar y nada.

Saludos.


Título: Re: [NetBeans] Problema usando la librería DefaultEditorKit
Publicado por: 1mpuls0 en 7 Marzo 2011, 22:44 pm
A qué te refieres con "este caso no me funcionaría"?

De donde quieres copiar?, de un componente que guarde texto en tu aplicación?, o del portapapeles del SO?.


Título: Re: [NetBeans] Problema usando la librería DefaultEditorKit
Publicado por: ~ Yoya ~ en 7 Marzo 2011, 22:55 pm
Del portapapeles del so


Título: Re: [NetBeans] Problema usando la librería DefaultEditorKit
Publicado por: 1mpuls0 en 7 Marzo 2011, 23:20 pm
Aquí un ejemplo:

Código
  1. import java.awt.datatransfer.Clipboard;
  2. import java.awt.datatransfer.ClipboardOwner;
  3. import java.awt.datatransfer.Transferable;
  4. import java.awt.datatransfer.StringSelection;
  5. import java.awt.datatransfer.DataFlavor;
  6. import java.awt.datatransfer.UnsupportedFlavorException;
  7. import java.awt.Toolkit;
  8. import java.io.*;
  9.  
  10. public class CopiarPortapapeles implements ClipboardOwner {
  11.  
  12. public static void main(String args[]) {
  13. new CopiarPortapapeles();
  14. }
  15.  
  16.    public CopiarPortapapeles() {
  17.     System.out.println("CONTENIDO DEL PORTAPAPELES:\n" + obtenerContenidoPortapapeles() );
  18.    }
  19.  
  20.    public void lostOwnership( Clipboard aClipboard, Transferable aContents) {
  21.    }
  22.  
  23. public String obtenerContenidoPortapapeles() {
  24.    String resultado = "";
  25.  
  26.    Clipboard portapapeles = Toolkit.getDefaultToolkit().getSystemClipboard();
  27.  
  28.    Transferable contenido = portapapeles.getContents(null);
  29.  
  30.    boolean existeTexto = (contenido != null) && contenido.isDataFlavorSupported(DataFlavor.stringFlavor);
  31.    if( existeTexto ) {
  32.      try {
  33.        resultado = (String)contenido.getTransferData(DataFlavor.stringFlavor);
  34.      }
  35.      catch (UnsupportedFlavorException ex){
  36.        System.out.println(ex);
  37.        ex.printStackTrace();
  38.      }
  39.      catch (IOException ex) {
  40.        System.out.println(ex);
  41.        ex.printStackTrace();
  42.      }
  43.    }
  44.    else{
  45.     resultado="NO HAY TEXTO EN EL PORTAPAPELES";
  46.    }
  47.  
  48.    return resultado;
  49.  }
  50.  
  51. }
  52.  

EDITO: Es sin utilizar la librería que mencionas.

Saludos.


Título: Re: [NetBeans] Problema usando la librería DefaultEditorKit
Publicado por: ~ Yoya ~ en 7 Marzo 2011, 23:23 pm
ok gracias