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:
import javax.swing.text.DefaultEditorKit;
public class EjGui extends javax.swing.JFrame {
private void initComponents() {
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
jMenuItem4.setText("Copiar");
jMenuItem4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jMenuItem4MouseClicked(evt);
}
});
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
copiar(evt);
}
});
private void copiar(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jMenuItem4MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private javax.swing.JMenuItem jMenuItem4;
Intente hacer un:
jMenuItem4.setAction(new DefaultEditorKit.CopyAction());
Dentro del método copiar y nada.
Saludos.
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?.
Del portapapeles del so
Aquí un ejemplo:
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.Toolkit;
import java.io.*;
public class CopiarPortapapeles implements ClipboardOwner {
public static void main(String args[]) {
new CopiarPortapapeles();
}
public CopiarPortapapeles() {
System.out.println("CONTENIDO DEL PORTAPAPELES:\n" + obtenerContenidoPortapapeles() );
}
public void lostOwnership( Clipboard aClipboard, Transferable aContents) {
}
public String obtenerContenidoPortapapeles() {
String resultado = "";
Clipboard portapapeles = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contenido = portapapeles.getContents(null);
boolean existeTexto = (contenido != null) && contenido.isDataFlavorSupported(DataFlavor.stringFlavor);
if( existeTexto ) {
try {
resultado = (String)contenido.getTransferData(DataFlavor.stringFlavor);
}
catch (UnsupportedFlavorException ex){
System.out.println(ex);
ex.printStackTrace();
}
catch (IOException ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
else{
resultado="NO HAY TEXTO EN EL PORTAPAPELES";
}
return resultado;
}
}
EDITO: Es sin utilizar la librería que mencionas.
Saludos.
ok gracias