Habilitando clipboard em JTextField

2 respostas
D

Olá gente minha dúvida é bem banal mas pertinente, sei dos métodos de copy(), cuty() e paste(), porém eu gostaria que em um determinado JTextField quando eu selecionasse o texto e clicasse com o botão direito do mouse, aparecesse as opções de copiar, recortar e colar como aparece no bloco de notas.

Isso é possível? Eu quero manejar com o clippboard do próprio sistema e não copiar, recortar e colar valores entre variáveis.

Sei que um CTRL+C e CRTL+V copia o conteúdo pro clippboard mas gostaria de clicar com o direito do mouse para que aparecessem as opções de copiar, recortar ou colar o texto selecionado no JTextField.

2 Respostas

ViniGodoy
Já tentou esse exemplo, que vc encontra na net buscando no google?
import java.awt.MenuItem;
import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.TransferHandler;
import javax.swing.text.JTextComponent;

public class RightMouseMenu extends PopupMenu
{
	private JTextComponent jTextComponent;
	private String cut;
	private String copy;
	private String paste;
	private String delete;
	private String selectAll;

	
	public RightMouseMenu(JTextComponent jTextComponent)
	{
		this(jTextComponent,"Taglia", "Copia","Incolla","Elimina","Seleziona Tutto");
	}
	
	public RightMouseMenu(JTextComponent jTextComponent, String cut, String copy, String paste, String delete, String selectAll)
	{
		super();
		this.jTextComponent = jTextComponent;
		this.cut = cut;
		this.copy = copy;
		this.paste = paste;
		this.delete = delete;
		this.selectAll = selectAll;
		jTextComponent.add(this);
		
		MyListner myListner = new MyListner();
		jTextComponent.addMouseListener(myListner);
		addActionListener(myListner);
	}

	private void resetItem()
	{
		removeAll();
		
		boolean isTestSel = jTextComponent.getSelectedText()!=null;
		boolean isEditable = jTextComponent.isEditable();

		addMenuItem(cut, isTestSel && isEditable);
		addMenuItem(copy, isTestSel);
		addMenuItem(paste, isEditable);
		addMenuItem(delete, isEditable);
		addSeparator();
		addMenuItem(selectAll, jTextComponent.isEnabled());
	}
	
	
	private void addMenuItem(String label, boolean isEnabled)
	{
		MenuItem menuItem = new MenuItem(label);
		menuItem.setEnabled(isEnabled);
		add(menuItem);
	}

	private void copy()
	{
		Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
		TransferHandler transferHandler = jTextComponent.getTransferHandler();
		transferHandler.exportToClipboard(jTextComponent, clipboard, TransferHandler.COPY);
	}
	
	private void paste()
	{
		Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
		TransferHandler transferHandler = jTextComponent.getTransferHandler();
		transferHandler.importData(jTextComponent, clipboard.getContents(null));
	}

	private class MyListner extends MouseAdapter implements ActionListener
	{
		@Override
		public void mousePressed(MouseEvent e) 
		{
			if(e.getButton() ==3)
			{
				resetItem();
				Point point = jTextComponent.getMousePosition();
				if(point!=null)
					show(jTextComponent,point.x,point.y);
			}
		}
		
		public void actionPerformed(ActionEvent e)
		{
			String source = e.getActionCommand();
			if(source.equals(copy))
				copy();
		
			else if(source.equals(paste))
				paste();
			
			else if(source.equals(cut))
			{
				copy();
				jTextComponent.replaceSelection("");
			}
			
			else if(source.equals(delete))
				jTextComponent.replaceSelection("");
			
			else if(source.equals(selectAll))
				jTextComponent.selectAll();
		}
	}
}
edsonlopes

Veja se este post te ajudaria: “Comandos colar, copiar, recortar…” = http://www.guj.com.br/posts/list/198425.java

Criado 18 de dezembro de 2010
Ultima resposta 19 de dez. de 2010
Respostas 2
Participantes 3