我写了一段:
class myMouseListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){ if(e.isPopupTrigger()){
System.out.print("dddddddddd"); }
}
}
有本书上介绍isPopupTrigger()返回true则是鼠标右键。可为什么捕捉不到呢?
class myMouseListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){ if(e.isPopupTrigger()){
System.out.print("dddddddddd"); }
}
}
有本书上介绍isPopupTrigger()返回true则是鼠标右键。可为什么捕捉不到呢?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;public class TestMouse extends JFrame implements MouseInputListener {
static JFrame frame;
JLabel lbText;
JPanel jpanel;
JPanel jContentPane;
int x1 = 0, y1 = 0;
int startX, startY, endX, endY;
int flag = 0;
boolean shiftPress = false; // shift键是否按下
KeyEventTest keyListener;
/**
* 默认的构造函数
*/
public TestMouse() {
super("模式对话框");
setContentPane(getContentpane()); // 添加包容器
setJMenuBar(createMenuBar()); // 添加菜单工具栏
setSize(500, 400); // size
setLocation(100, 100); // start location
jContentPane.addKeyListener(keyListener);
}
/**
* 带一个参数的构造函数
*/
public TestMouse(String frameName) {
setTitle(frameName);
setContentPane(getContentpane()); // 添加包容器
setJMenuBar(createMenuBar()); // 添加菜单工具栏
setSize(500, 400); // size
setLocation(100, 100); // start location
jContentPane.addKeyListener(keyListener);
} /**
* @return contentPane_根容器
*/
private JPanel getContentpane() {
if (jContentPane == null) {
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.addMouseListener(this);
jContentPane.addMouseMotionListener(this);
jContentPane.add(getpanel(), java.awt.BorderLayout.CENTER);
}
return jContentPane; } private JPanel getpanel() {
if (jpanel == null) {
jpanel = new JPanel();
jpanel.setLayout(null);
jpanel.add(getLable());
}
return jpanel;
}
private Component getLable() {
lbText = new JLabel();
lbText.setBounds(10, 10, 150, 30);
return lbText;
} /**
* @return bar_菜单工具栏
*/
private JMenuBar createMenuBar() {
JMenuBar bar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
bar.add(fileMenu);
return bar;
}
public static void main(String[] args) {
frame = new TestMouse();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void mouseClicked(MouseEvent e) {
if (e.getModifiers() == Event.META_MASK) {
PopupMenu popupMenu = new PopupMenu(); // 弹出式主菜单
MenuItem rightItem = new MenuItem();
rightItem.setLabel("显示右键");
rightItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
lbText.setText("显示右键");
}
}); frame.add(popupMenu);
popupMenu.add(rightItem);
popupMenu.show(frame.getContentPane(), e.getX(), e.getY());
}
}
public void mousePressed(MouseEvent arg0) {
startX = arg0.getX();
startY = arg0.getY(); }
public void mouseReleased(MouseEvent arg0) {
this.lbText.setText("");
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mouseDragged(MouseEvent e) {
flag = 2;
endX = e.getX();
endY = e.getY();
repaint();
}
public void update(Graphics g) {
g.setColor(this.getBackground());
g.fillRect(0, 0, this.getWidth(), this.getHeight());
paint(g);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLUE);
if (flag == 1) {
} else if (flag == 2) {
g2.drawString("鼠标坐标:(" + x1 + "," + y1 + ")", 10, 50);
if (this.shiftPress == true) {
g2.drawLine(startX, startY, endX, startY);
} else {
g2.drawLine(startX, startY, endX, endY);
}
}
}
public void mouseMoved(MouseEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}}
Returns whether or not this mouse event is the popup menu trigger event for the platform.
Note: Popup menus are triggered differently on different systems. Therefore, isPopupTrigger should be checked in both mousePressed and mouseReleased for proper cross-platform functionality.
programTable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
showPopup(e);
} public void mouseReleased(MouseEvent e) {
showPopup(e);
} private void showPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
popup.show(e.getComponent(), e.getX(), e.getY());
int selRow = programTable.rowAtPoint(e.getPoint());
programTable.setRowSelectionInterval(selRow, selRow);
}
}
});