如题。右键选择的方式和左键是一样的。例如用右键来删除行等.

解决方案 »

  1.   

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

    MouseInputListener mil = new MouseInputListener() { public void mouseClicked(MouseEvent e) {
    processEvent(e);
    } public void mousePressed(MouseEvent e) {
    processEvent(e);
    } public void mouseReleased(MouseEvent e) {
    processEvent(e);
    if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {
    popup.show(table, e.getX(), e.getY());
    }
    } public void mouseEntered(MouseEvent e) {
    processEvent(e);
    } public void mouseExited(MouseEvent e) {
    processEvent(e);
    } public void mouseDragged(MouseEvent e) {
    processEvent(e);
    } public void mouseMoved(MouseEvent e) {
    processEvent(e);
    }

    private void processEvent(MouseEvent e) {
    if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {
    MouseEvent ne = new MouseEvent(
    e.getComponent(), e.getID(), 
    e.getWhen(), MouseEvent.BUTTON1_MASK, 
    e.getX(), e.getY(), e.getClickCount(), false);
    table.dispatchEvent(ne);
    }
    }

    };
    table.addMouseListener(mil);
    table.addMouseMotionListener(mil);

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

  2.   

    但是这个代码不能够实现CTRL 和 Shift的组合选择行为
    并且按下Ctrl和Shift时不让弹出菜单,那又该如何实现呢?
    请指教, 谢谢
      

  3.   

    import java.awt.BorderLayout;
    import java.awt.event.MouseEvent;import javax.swing.*;
    import javax.swing.event.MouseInputListener;public class T {
    public static void main(String[] args) {
    final JTable table = new JTable(5, 5);
    final JPopupMenu popup = new JPopupMenu();
    popup.add(new JMenuItem("MenuItem-1"));
    popup.add(new JMenuItem("MenuItem-2"));
    popup.add(new JMenuItem("MenuItem-3")); MouseInputListener mil = new MouseInputListener() { public void mouseClicked(MouseEvent e) {
    processEvent(e);
    } public void mousePressed(MouseEvent e) {
    processEvent(e);
    } public void mouseReleased(MouseEvent e) {
    processEvent(e);
    if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0 &&
    !e.isControlDown() && !e.isShiftDown()) {
    popup.show(table, e.getX(), e.getY());
    }
    } public void mouseEntered(MouseEvent e) {
    processEvent(e);
    } public void mouseExited(MouseEvent e) {
    processEvent(e);
    } public void mouseDragged(MouseEvent e) {
    processEvent(e);
    } public void mouseMoved(MouseEvent e) {
    processEvent(e);
    } private void processEvent(MouseEvent e) {
    if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {
    int modifiers = e.getModifiers();
    modifiers -= MouseEvent.BUTTON3_MASK;
    modifiers |= MouseEvent.BUTTON1_MASK;
    MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(),
    e.getWhen(), modifiers, e.getX(), e
    .getY(), e.getClickCount(), false);
    table.dispatchEvent(ne);
    }
    } };
    table.addMouseListener(mil);
    table.addMouseMotionListener(mil); JFrame f = new JFrame();
    f.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }