import java.awt.BorderLayout;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
/**
 * @author Carlaum
 */
public class ExemploTabelaMenu extends JFrame
{
    JPopupMenu popUp;
    ImageIcon icone;
    TrayIcon trayIcon;
    JTable tabela;
    DefaultTableModel modeloTabela;
    JPanel panel;
    Object[] colunas =
    {
        "Coluna1", "Coluna2", "Coluna3"
    };
    Object[][] linhas =
    {
    };
    public ExemploTabelaMenu()
    {
        this.setTitle("Exemplo de Tabela com JPopupMenu");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(640, 480);
        this.setLocationRelativeTo(null); // Faz a janela ser criada no centro da tela
        this.criaMenu();
        panel = new JPanel(new BorderLayout());
        //Cria o modelo da tabela
        modeloTabela = new DefaultTableModel(linhas, colunas);
        //Cria a tabela
        tabela = new JTable(modeloTabela);
        tabela.addMouseListener(
                new MouseAdapter()
                {
                    public void mouseClicked(MouseEvent eventoMouse)
                    {
                        if (eventoMouse.getButton() == MouseEvent.BUTTON3)
                        {
                            popUp.setVisible(false);
                            popUp.setLocation(eventoMouse.getXOnScreen(), eventoMouse.getYOnScreen());
                            popUp.setVisible(true);
                        }
                        else
                        {
                            popUp.setVisible(false);
                        }
                    }
                });
        tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        panel.add(tabela, BorderLayout.CENTER);
        Object[] item =
        {
            "linha1 item1", "linha1 item2", "linha1 item3"
        };
        Object[] item2 =
        {
            "linha2 item1", "linha2 item2", "linha2 item3"
        };
        modeloTabela.addRow(item);
        modeloTabela.addRow(item2);
        this.add(panel);
        this.setVisible(true);
    }
    /**
     * Cria o JPopupMenu e os JMenuItems
     */
    private void criaMenu()
    {
        popUp = new JPopupMenu();
        JMenuItem item1 = new JMenuItem("Teste");
        item1.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        popUp.setVisible(false);
                    }
                });
        JMenuItem item2 = new JMenuItem("Sair");
        item2.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        System.exit(0);
                    }
                });
        popUp.add(item1);
        popUp.addSeparator();// adiciona uma linha no popupMenu
        popUp.add(item2);
    }
    public static void main(String args[])
    {
        new ExemploTabelaMenu();
    }
}