JPopupMenu - Menu de Contexto sempre visível

0 respostas
J

Olá galera do forum, tô com umm pequeno problema com um JPopupMenu.
Tenho uma classe ki é responsável por criar JPopupMenu em JTextFields.

public class MenuContexto extends MouseAdapter implements ActionListener {

	JTextField component;
	JPopupMenu mpopup;
	JMenuItem miSelecionar, miRecortar, miCopiar, miColar;

	public MenuContexto(JTextField theComponent) {
		component = theComponent;
		component.addMouseListener(this);

		mpopup = new JPopupMenu();

		miSelecionar = new JMenuItem("Selecionar");
		miSelecionar.addActionListener(this);

		miRecortar = new JMenuItem("Recortar");
		miRecortar.addActionListener(this);

		miCopiar = new JMenuItem("Copiar");
		miCopiar.addActionListener(this);

		miColar = new JMenuItem("Colar");
		miColar.addActionListener(this);

		mpopup.add(miSelecionar);
		mpopup.add(miRecortar);
		mpopup.add(miCopiar);
		mpopup.addSeparator();
		mpopup.add(miColar);
		mpopup.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == miSelecionar) {
			component.selectAll();
		}

		if (e.getSource() == miRecortar) {
			component.cut();
		}

		if (e.getSource() == miCopiar) {
			component.copy();
		}

		if (e.getSource() == miColar) {
			component.paste();
		}

	}

	@Override
	public void mousePressed(MouseEvent e) {
		maybePopup(e);
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		maybePopup(e);
	}

	private void maybePopup(MouseEvent e) {
		if (e.isPopupTrigger()) {
			mpopup.show(e.getComponent(), e.getX(), e.getY());
		}
	}

}

Créditos da classe:[url]http://javafree.uol.com.br/topic-861932-duvida-classe-copia-cola.html[/url]

Na prática fica assim:

MenuContexto menu = new MenuContexto(textField_4);

Roda tudo bem se não fosse um pekeno problema, qdo inicio a aplicação o JPopupMenu aparece
no canto superior esquedo. Não queria ki fosse assim, mas ki só aparecesse qdo clicasse
com o botão direito em cima de um JTextField. Qdo eu clico aparece, mas eu quero ki ele
apereça apenas nos JTextField e não qdo iniciasse a aplicação.

Grato desde já.

Criado 31 de janeiro de 2010
Respostas 0
Participantes 1