一个JTable,我写了个右键菜单,刚打开的时候是可以正确显示菜单的,可是当我点击鼠标左键进入某一单元格之后,再按鼠标右键就无法显示菜单了,而且我发现这个时候根本就不能触发table的鼠标事件。请问有什么好办法吗???

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.*;
    import javax.swing.table.TableCellEditor;public class T {
    public static void main(String[] args) {
    final JPopupMenu popup = new JPopupMenu();
    popup.add(new JMenuItem("MenuItem-1"));
    popup.add(new JMenuItem("MenuItem-2"));
    popup.add(new JMenuItem("MenuItem-3"));

    final MouseListener ml = new MouseAdapter() {
    public void mouseReleased(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON3) {
    Component c = e.getComponent();
    popup.show(c, e.getX(), e.getY());
    }
    }
    }; JTable table = new JTable(5, 5) {
    public Component prepareEditor(TableCellEditor editor, int row, int column) {
    Component edComp = super.prepareEditor(editor, row, column);
    edComp.removeMouseListener(ml);
    edComp.addMouseListener(ml);

    return edComp;
    }
    };
    JScrollPane sp = new JScrollPane(table);

    table.addMouseListener(ml);

    JFrame f = new JFrame();
    f.getContentPane().add(sp, BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }