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); } }
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);
}
}
并且按下Ctrl和Shift时不让弹出菜单,那又该如何实现呢?
请指教, 谢谢
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);
}
}