Bom dia,
Procurei MUITO aqui no forum sobre o assunto, achei alguns posts mas nenhum exatamente com o mesmo problema que o meu.
Estou fazendo uma aplicação swing e nela tenho uma JTable. Estou querendo utilizar um pequeno menu com o botão direito no mouse, porém so queria q esse menu SOMENtE fosse exibido quando um elemento da JTabla estiver selecionado e quando clicado dentro da area da JTable.
Inicialmente vi no DevMedia se nao me engano, essa solução sendo implementada com JPopUpMenu utilizando 2 classes.
Uma classe abstrata…
package br.com.Util;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
public abstract class AbstractJPopupPanel extends JPanel implements
MouseListener {
private JPopupMenu jPopupMenu;
public AbstractJPopupPanel() {
jPopupMenu = new JPopupMenu();
String[] menuItems = getMenuItems();
for (int i = 0; i < menuItems.length; i++) {
JMenuItem menuItem = new JMenuItem(menuItems[i]);
jPopupMenu.add(menuItem);
}
super.addMouseListener(this);
super.setPreferredSize(new Dimension(100, 300));
}
public void mouseClicked(MouseEvent event) {
System.out.println("EU LANCEI UM EVENTO LOUCO!");
if (event.getButton() == MouseEvent.BUTTON3) {
jPopupMenu.show(this, event.getX(), event.getY());
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mousePressed(MouseEvent event) {
}
public abstract String[] getMenuItems();
}
e a “filha”…
package br.com.Util;
public class JPopUpOpcoes extends AbstractJPopupPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
public String[] getMenuItems() {
return new String[] { "Ver", "Alterar", "Excluir" };
}
}
Utilizando essas classes criei uma classe teste q extend de JFrame adicionei e funcionou certinho… Porem no meu projeto msm, cada tela é um JPanel que vou jogando no frame conforme solicitado… e insiro da msm forma como fiz no JFrame e n funciona de forma alguma…
tentei adicionar na tabela com o:
JPopUpOpcoes pop = new JPopUpOpcoes();
tabela.add(popUp);
tentei instanciar em um mouse listener e tbm nada…
Alguem tem ideia de como eu posso fazer meu Pop Up dessa forma ou quem sabe de uma forma melhor??
Agradeço desde já