Newsgroup: it.comp.java
Titolo: x esperti: catturare evento combinazione tasti

Ho una tabella e vorrei catturare l'evento copia (ctrl-c) e incolla
(ctrl-v). Sto provando a gestire con un key listener ma il risultato è
pessimo, ovvero non funge, c'è una maniera più semplice che voi
sapppiate? Grazie a tutti
        /** Key listener for the table. */
        KeyListener kl = new KeyListener()
        {
			public void keyPressed(KeyEvent e)
			{
				if( keyPressed==KeyEvent.VK_CONTROL &&
!(keyReleased==KeyEvent.VK_CONTROL) )
				{
					if( e.getKeyCode() == KeyEvent.VK_V) {
						System.out.println("incolla ctrl - v");
						resetKey(); //rimette a -1 keypressed e keyreleased
						return;
					}
					if( e.getKeyCode() == KeyEvent.VK_C) {
						System.out.println("copia ctrl - c");
						resetKey();
						return;
					}
				}
				if(e.getKeyCode()!=keyPressed)
					keyPressed = e.getKeyCode();
			}
			public void keyReleased(KeyEvent e)
			{
				keyReleased = e.getKeyCode();
			}

Se non erro esiste il supporto per gestire la clipboard direttamente da
java, senza necessita di procedere come stai facendo tu, prova a
cercare nelle API qualcosa tipo ClipBoard....
Ciriciao da White Tiger


Prova a dare un occhiata a questo:
<code>
package system.clipboard;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class ClipBoard extends JFrame implements ClipboardOwner,
ActionListener
{
	private static final long serialVersionUID = 1L;
	JTextArea srcText, dstText;
	JButton copyButton, pasteButton;
	Clipboard clipboard = getToolkit().getSystemClipboard();
	public ClipBoard()
	{
		super("Clipboard Test");
		GridBagLayout gridbag = new GridBagLayout();
		GridBagConstraints c = new GridBagConstraints();
		setLayout(gridbag);
		srcText = new JTextArea(8, 32);
		c.gridwidth = 2;
		c.anchor = GridBagConstraints.CENTER;
		gridbag.setConstraints(srcText, c);
		add(srcText);
		copyButton = new JButton("Copy Above");
		copyButton.setActionCommand("copy");
		copyButton.addActionListener(this);
		c.gridy = 1;
		c.gridwidth = 1;
		gridbag.setConstraints(copyButton, c);
		add(copyButton);
		pasteButton = new JButton("Paste Below");
		pasteButton.setActionCommand("paste");
		pasteButton.addActionListener(this);
		pasteButton.setEnabled(false);
		c.gridx = 1;
		gridbag.setConstraints(pasteButton, c);
		add(pasteButton);
		dstText = new JTextArea(8, 32);
		c.gridx = 0;
		c.gridy = 2;
		c.gridwidth = 2;
		gridbag.setConstraints(dstText, c);
		add(dstText);
		pack();
	}
	public void actionPerformed(ActionEvent evt)
	{
		String cmd = evt.getActionCommand();
		if(cmd.equals("copy"))
		{
			// Implement Copy operation
			String srcData = srcText.getText();
			if(srcData != null)
			{
				StringSelection contents = new StringSelection(srcData);
				clipboard.setContents(contents, this);
				pasteButton.setEnabled(true);
			}
		}
		else if(cmd.equals("paste"))
		{
			// Implement Paste operation
			Transferable content = clipboard.getContents(this);
			if(content != null)
			{
				try
				{
					String dstData = (String)
content.getTransferData(DataFlavor.stringFlavor);
					dstText.append(dstData);
				}
				catch(Exception e)
				{
					System.out.println("Couldn't get contents in format: " +
DataFlavor.stringFlavor.getHumanPresentableName());
				}
			}
		}
	}
	public void lostOwnership(Clipboard clipboard, Transferable contents)
	{
		System.out.println("Clipboard contents replaced");
	}
	public static void main(String[] args)
	{
		ClipBoard test = new ClipBoard();
		test.setVisible(true);
	}
}
</code>
Ciriciao da White Tiger

 pessimo, ovvero non funge
Non te lo posso dare per sicuro, ma se tu fai una prova di questo tipo:
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_V  && e.isControlDown()) {
// premuto ctrl+v
}
ecc
Saluti
CarMas

Grazie a tutti, ho risolto in maniera pessima! Però funziona,
memorizzo in una variabile l'ultimo tasto premuto e faccio un controllo
su quello premuto ora...
CarMas ha scritto:
